原型式继承和寄生式继承

6.3.4原型式继承

function object17(obj) {
    //自定义一个构造函数
    function Person17(){}
    //把传入的obj对象赋给 构造函数的原型
    //这样原型方法中有了共有的属性
    Person17.prototype = obj;
    return new Person17();
}
var person17 = {
    name: '风云突变',
    colors: ['red','blue','green'],
}

object17(person17) 发生了什么???

  1. 定义一个构造函数Person17
  2. 把传入的对象赋给构造函数的原型
  3. 返回构造函数的一个实例
//执行完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

扩展知识:
引用类型和值类型的区别

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值