原型式继承
2019-07-14 本文已影响0人
南蓝NL
- 基本思想:没有使用构造函数,借助原型可以基于已有的对象创建新对象,同时还不必创建自定义类型
- 优点: 想让一个对象与另一个对象保持类似,就不用创建构造函数了,比较方便,不过也是优缺点的
- 缺点: 包含引用类型的值始终会共享,这跟原型链继承一样
function object(o){
function F(){}
F.prototype = o;
return new F();
}
- 过程:首先创建一个基础对象,这个对象作为另外一个对象的基础,两者之间很类似,然后传给Object函数,然后这个新创建的再根据具体需求去修改
var dog = {
species: '比熊犬',
color: 'gold',
skills: ["jump","climb","catch","run"]
}
var dog1 = Object(dog); // dog 对象作为dog1 对象的基础,在ES5当中,这里可以写成Object.create
dog1.species = ' 泰迪';
dog1.color = 'brown';
dog1.skills.push('acting');
var dog2 = Object(dog);
dog2.species = ' 吉娃娃';
dog2.color = 'grey';
dog2.skills.push('show');
skills: ["jump","climb","catch","run"];
console.log(dog.skills); // ["jump", "climb", "catch", "run", "acting", "show"]
console.log(dog.species); // 吉娃娃