javascript - JS创建对象的另一种方法是如何理解的?
PHPz
PHPz 2017-04-11 09:47:57
[JavaScript讨论组]

我知道创建一个对象的方式一般是
var obj = function (name,age) {//创建一个类
    this.name = name;
    this.age=age;
  }
var student= new obg("xiaoming","18");//实例化一个对象

这种方式我理解,就如同我需要一个car,我只需要知道car有一些属性(颜色,名字),然后我就可以直接实例一个car(白色,宝马),然后要用的时候,一目了然,这很“面向对象”,我的对象就是这个白色的宝马。
可是还有一种创建对象的方式:
Object.beget = function (o) {//犀牛书和蝴蝶书上看到的
    var F = function (o) {};//这一步是创建一个对象F
    F.prototype = o ;//这是让它的原型为o?这一步和前面一步是怎样个意思?连起来就晕了
    return new F;//返回F
  };
var Car = {
    name:'',
    color:'whait'
  };
var myCar = Object.beget(Car);
就是代码注释部分,求大神解惑,它是怎样的一个逻辑

PHPz
PHPz

学习是最好的投资!

全部回复(1)
阿神

先看一下两种形式的对象内部结构

第一种:

第二种:

可以看到第二种方式是把你的内容保存到了原型链中,这种方式比较利于后续的继承,使用的技术是寄生组合继承,原型链继承相关知识

第二种方式其实是一个工厂模式,并且更具有灵活性,比如说现在需求改了,需要添加车辆的价格,那么用第二种方式的话直接

Object.beget({... price: 250000});

或者

var baseCar = Object.beget({name: 'bmw', color: 'white'});
baseCar.price = 250000;
var myCar = Object.beget(baseCar);

这样还使用到了继承的机制。

第一种方式需要去修改你定义的类或者要去写继承逻辑。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号