摘要:参考文章构造函数模式构造函数的问题使用构造函数最主要的问题就是每个方法都要在每个实例上重新创建一次,与的都有方法,但不是同一个的实例,因为在中也是一个对象。因此他们共有的方法并不相等。
参考文章
构造函数模式:
this.show =function(){alert(this.name+"xxx")}
function Car(color,wheels){ this.color=color; this.wheels=wheels; this.cost=3000 }
构造函数的问题:使用构造函数最主要的问题就是每个方法都要在每个实例上重新创建一次,p1与p2的都有show方法,但不是同一个Function的实例,因为function在js中也是一个对象。因此他们共有的show方法并不相等。相当于都自己下载一份。浪费内存。可以作为公共方法继承,就像网盘,保存 其实是新建一个指针,指向一个物理实体。所以只有一个实例
原型模式
function Car={}; Car.prototype.name = "法拉利"; Car.prototype.color = "red"; Car.prototype.move = function(){xxx};
混合模式,复制+继承(共享)
function Car(color){
this.color = color;
}
Car.prototype.showname = function(){alert(this.name)}
or
Car.prototype={
showname:function(){ alert(this.name); }
}
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/84380.html
摘要:在基于原型的面向对象方式中,对象则是依靠构造函数和原型构造出来的。来看下面的例子优点与单纯使用构造函数不一样,原型对象中的方法不会在实例中重新创建一次,节约内存。 我们所熟知的面向对象语言如 C++、Java 都有类的的概念,类是实例的类型模板,比如Student表示学生这种类型,而不表示任何具体的某个学生,而实例就是根据这个类型创建的一个具体的对象,比如zhangsan、lisi,由...
摘要:用对象字面量形式创建的对象,直接赋值给函数的原型对象,本质上完全重写了其对象,因此属性也就变成了新对象的属性指向构造函数,不再指向函数。 【上一篇】:JavaScript对象内部属性及其特性总结 showImg(https://segmentfault.com/img/bVbjYsc?w=839&h=489); 工厂模式(★★) 先在内部显示地创建一个临时对象,根据接收的参数来构建(赋...
摘要:构造函数的两个特征函数内部使用了,指向所要生成的对象实例。将一个空对象的指向构造函数的属性,这个对象就是要返回的实例对象。用面向对象开发时,把要生成的实例对象的特有属性放到构造函数内,把共有的方法放到构造函数的里面。 JS中面向对象的概念 面向对象OOP是一种组织代码结构、实现功能过程的思维方式。它将真实世界各种复杂的关系,抽象为一个个对象,然后由对象之间的分工与合作,完成对真实世界的...
首先明确两个概念: 构造函数和 instance 分别是什么 构造函数JS 中并没有在语法层面上面区分构造函数和普通函数, 唯一的区别是调用方式使用 new 调用的函数就是构造函数, 没有则是普通函数. 实例new Constructor() 返回的对象称为 Constructor 的一个实例 然后提出一个规则:在构造函数的原型上面附加的属性或者方法, 可以被其所有的实例共用. 可以推导出: ...
摘要:对象创建的三种方式字面量创建方式系统内置构造函数方式自定义构造函数构造函数原型实例之间的关系实例是由构造函数实例化创建的,每个函数在被创建的时候,都会默认有一个对象。 JS 对象创建的三种方式 //字面量创建方式 var person= { name:jack } //系统内置构造函数方式 var person= new Object(); person.name = jack; ...
阅读 991·2021-11-25 09:43
阅读 1394·2021-11-18 10:02
阅读 1731·2021-11-02 14:41
阅读 2292·2019-08-30 15:55
阅读 1047·2019-08-29 16:18
阅读 2536·2019-08-29 14:15
阅读 1371·2019-08-26 18:13
阅读 702·2019-08-26 10:27