6.3.4原型式继承
function object17(obj) {
//自定义一个构造函数
function Person17(){}
//把传入的obj对象赋给 构造函数的原型
//这样原型方法中有了共有的属性
Person17.prototype = obj;
return new Person17();
}
var person17 = {
name: '风云突变',
colors: ['red','blue','green'],
}
object17(person17) 发生了什么???
- 定义一个构造函数Person17
- 把传入的对象赋给构造函数的原型
- 返回构造函数的一个实例
//执行完object17(person17),返回的是一个实例,实例的__proto__属性指向 原型方法
var anotherPeron17 = object17(person17);
console.log('anotherPeron17',anotherPeron17); //因此这个打印出来的结果 就一目了然了。
打印的结果如下:
Person17 {}
__proto__:
colors: (3) ["red", "blue", "green"]
name: "风云突变"
__proto__: Object
在进行到这一步,我们会发现anotherPeron17 === yetanotherPerson17,不信大可一试
console.log('anotherPeron17 === yetanotherPerson17',anotherPeron17 == yetanotherPerson17); //true
明白了,两个实例应该不会相等,我们可以验证一下
function Person18() {
this.name = 'tianxia';
}
var person181 = new Person18();
var person182 = new Person18();
//经验证果然是不相等的
console.log('person181',person181==person182);
因此这个也是false
console.log(anotherPeron17 == yetanotherPerson17); //false
扩展知识:
引用类型和值类型的区别