-
继承发展史
-
传统形式—->原型链
过多的继承了没用的属性 -
借用构造函数
不能继承借用构造函数的原型
每次构造函数都要多走一个函数function Person( name, age, sex) { this.name = name; this.age = age;this.sex = sex; } function Student ( name, age, sex, grade) { Person.call(this, name, age, sex) ; this.grade = grade; } var student = new Student();
-
共享原型
不能随便改动自己的原Father. prototype.lastName = "Deng";function Father( ) { } function Son( ) { } function inherit( Target, 0rigin) { Target.prototype = 0rigin.prototype; } inherit(Son,Father); //改进 //function F() {} //F.prototype = Father.prototype //Son.prototype = new F( );
-
圣杯模式
function inherit( Target, 0rigin) { function F() {}; F.prototype = 0rigin. prototype; Target.prototype = new F(); Target.prototype.constuctor = Target; Target.prototype.uber = 0rigin.prototype; }
-
2.命名空间
管理变量,防止污染全局,适用于模块化开发
var org = {
aprt1:{
xiaoli:{}
xiaozhang:{}
}
}
var xiaoli = org.aprt1.xiaoli
对象的属性:Person.n
3.属性的表示方式
obj.prop = obj[“prop”]
3.对象的枚举
for in:遍历对象属性
var obj1 = {
a: 123, b: 234, C: 345
}
var key;
for (key in obj1) {
console.log(key);
console.log(obj1[key]);
}
-
.hasOwnProperty:判断是不是自己的属性
for(var prop in obj) { if( !obj.hasOwnProperty(prop)) { console.log(obj[prop] ) ; } }
-
in:判断属性是不是属于该对象的
-
instanceof:
A instanceof B:看A的原型链上有没有 B的原型
A对象是不是B构造函数构造出来的