JavaScript OOP
ON THIS PAGE
ES5 OOP
使用new关键字创建
最基础的对象创建方式
var user = new Object();
user.name = "John";
user.age = "23";
user.consoleName = function(){
console.log("hello"+this.name)
}
使用字面量创建
var user = {
name: "John",
age: "23",
consoleName: function(){
console.log("hello"+this.name)
}
}
工厂模式
解决了多个相似对象的创建问题,但是不好区分对象的具体类型
function newUser(name,age){
var rU = new Object();
rU.name = name;
rU.age = age;
ru.consoleName = function(){
console.log("hello"+this.name)
}
return rU;
}
var John = newUser("John","22");
var Kim = newUser("Kim","23")
构造函数和原型组合模式
这里使用构造函数来定义对象的属性,使用原型来定义共享的属性和方法,这样就可以通过传递不同的参数来创建出不同的对象,同时又拥有了共享的方法和属性。
function User(name,age){
this.name = name
this.age = age
};
User.prototype = {
contructor : User, //显式的指定User.prototype的contructor属性
alertName: function(){
alert("hello"+this.name)
}
};
var John = new User("John","22")
var Kim = new User("Kim","23")
组合继承:
function Super(){
this.flag = true;
}
Super.prototype.getFlag = function(){
return this.flag;
}
function Sub(){
this.subFlag = flase
Super.call(this)
}
Sub.prototype = new Super;
var obj = new Sub();
Sub.prototype.constructor = Sub; // 让对象的constructor指向其构造函数
Super.prototype.getSubFlag = function(){
return this.flag;
}
2019-10-31