JavaScript对象的创建之基于构造方法+原型方式


为了解决原型所带来的问题,此处需要通过组合构造方法和原型来实现对象的创建,将属性在构造方法中定义,将方法在原型中定义。这种有效集合了两者的优点,是目前最为常用的一种方式。

function Person(name,age,friends){
    //属性在构造函数中定义
    this.name = name;
    this.age = age;
    this.friends = friends;
}
Person.prototype = {
    constructor:Person,
    //方法在原型中定义
    say:function() {
        alert(this.name+"["+this.friends+"]");
    }
}
//此时所以的属性都是保存在自己的空间中的
var p1 = new Person("Leon",23,["Ada","Chris"]);
p1.name = "John";
p1.friends.push("Mike");//为p1增加了一个朋友
p1.say(); //John  ["Ada","Chris","Mike"]
var p2 = new Person("Ada",33,["Leon"]);
p2.say();//Ada Leon

内存模型图如下所示:

优质内容筛选与推荐>>
1、jQuery/javascript实现网页注册的表单验证
2、【免费线上实践】动手训练模型系列:SVM径向基核函数的参数选择
3、美团付晴川:算法工程师需要考察三种素养
4、Shell历史记录异地留痕审计与监控
5、每日一练(2017/5/14)


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号