[js]js设计模式-原型模式

本文详细解析了JavaScript中构造函数模型与原型模式的区别:构造函数模型下,每个对象拥有独立的属性和方法;而原型模式则实现了方法的共享,提高了内存利用率。

1312420-20180205151413716-1570421490.png

构造函数模型- 对象的属性和方法每人一份

function createJs(name, age) {
    this.name = name;
    this.age = age;
    this.writeJs = function () {
        console.log(this.name, this.age)
    }
}

p1 = new createJs("maotai", 22);
p1.writeJs();
p2 = new createJs("maotai2", 23);
p2.writeJs();

console.log(p1.writeJs===p2.writeJs);

原型模式- 对象的方法所有人共享一份

function createJs(name, age) {
    this.name = name;
    this.age = age;

}

createJs.prototype.writeJs = function () { //这个方法被所有对象共享
    console.log(this.name, this.age)
};

p1 = new createJs("maotai", 22);
p1.writeJs();
p2 = new createJs("maotai2", 23);
p2.writeJs();

console.log(p1.writeJs === p2.writeJs); //true



## 小结
类是函数, 函数有prototype
实例都是对象, 对象有__proto__属性
/*
*
* 1.每个函数数据类型(普通函数  类)都有个prototype属性,这个属性是一个对象数据类型的值
* 2.prototype上的浏览器天生给他加上了个constructor(构造函数),属性只是类本身
*     类:prototype
*         constructor
*         __proto__
* 3.每个对象都有__proto__属性
* 4.对象的__proto__指向所属类的原型
* 5.object原型上没有__proto__
* */

转载于:https://www.cnblogs.com/iiiiiher/p/8417725.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值