广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件专业 > 前端开发专业 > 正文

Web前端开发的原型如何创建对象?_惠州前端培训学校

作者:alu发布时间:2022-03-20分类:前端开发专业浏览:881


导读:Web前端开发的原型如何创建对象?这是大家在学习前端的过程都会遇到的问题,那么下面我们一起来看看惠州北大青鸟学术部老师是怎么解答的。

Web前端开发的原型如何创建对象?这是大家在学习前端的过程都会遇到的问题,那么下面我们一起来看看惠州北大青鸟学术部老师是怎么解答的。

一、组合使用原型模型和构造函数模型创建对象

1.1原型模型创建对象的缺陷

原型中的所有的属性都是共享的。也就是说,用同一个构造函数创建的对象去访问原型中的属性的时候,大家都是访问的同一个对象,如果一个对象对原型的属性进行了修改,则会反映到所有的对象上面。

但是在实际使用中,每个对象的属性一般是不同的。张三的姓名是张三,李四的姓名是李四。

==但是,这个共享特性对方法(属性值是函数的属性)又是非常合适的。==所有的对象共享方法是最佳状态。这种特性在c#和Java中是天生存在的。

1.2使用构造函数模型创建对象的缺陷

在构造函数中添加的属性和方法,每个对象都有自己独有的一份,大家不会共享。这个特性对属性比较合适,但是对方法又不太合适。因为对所有对象来说,他们的方法应该是一份就够了,没有必要每人一份,造成内存的浪费和性能的低下。

可以使用下面的方法解决:

但是上面的这种解决方法具有致命的缺陷:封装性太差。使用面向对象,目的之一就是封装代码,这个时候为了性能又要把代码抽出对象之外,这是反人类的设计。

1.3使用组合模式解决上述两种缺陷

原型模式适合封装方法,构造方法模式适合封装属性,综合两种模式的优点就有了组合模式。

二、动态原型模式创建对象

前面讲到的组合模式,也并非完美无缺,有一点也是感觉不是很完美。把构造方法和原型分开写,总让人感觉不舒服,应该想办法把构造方法和原型封装在一起,所以就有了动态原型模式。

动态原型模式把所有的属性和方法都封装在构造方法中,而仅仅在需要的时候才去在构造方法中初始化原型,又保持了同时使用构造函数和原型的优点。

三、与原型有关的几个属性和方法

3.1prototype属性

prototype存在于构造函数中(其实任意函数中都有,只不过不是构造函数的时候prototype我们不关注而已),他指向了这个构造函数的原型对象。

参考前面的示意图。

3.2constructor属性

constructor属性存在于原型对象中,他指向了构造函数

看下面的代码:

我们根据需要,可以为Person.prototype属性指定新的对象,来作为Person的原型对象。

但是这个时候有个问题,新的对象的constructor属性则不再指向Person构造函数了。

看下面的代码:

3.3__proto__属性(注意:左右各是2个下划线)

用构造方法创建一个新的对象之后,这个对象中默认会有一个不可访问的属性[[proto]] ,这个属性就指向了构造方法的原型对象。

但是在个别浏览器中,也提供了对这个属性[[proto]]的访问(chrome浏览器和火狐浏览器。ie浏览器不支持)。访问方式:p1.__proto__

但是开发者尽量不要用这种方式去访问,因为操作不慎会改变这个对象的继承原型链。

3.4hasOwnProperty()方法

大家知道,我们用去访问一个对象的属性的时候,这个属性既有可能来自对象本身,也有可能来自这个对象的[[proto]]属性指向的原型。

那么如何判断这个对象的来源呢?

hasOwnProperty方法,可以判断一个属性是否来自对象本身。

所以,通过hasOwnProperty这个方法可以判断一个属性是否在对象本身添加的,但是不能判断是否存在于原型中,因为有可能这个属性不存在。

也即是说,在原型中的属性和不存在的属性都会返回fasle。

这个也是唯一的一个处理属性而不查找原型链的方法!

如何判断一个属性是否存在于原型中呢?

3.5in操作符

in操作符用来判断一个属性是否存在于这个对象中。但是在查找这个属性时候,先在对象本身中找,如果对象找不到再去原型中找。换句话说,只要对象和原型中有一个地方存在这个属性,就返回true

回到前面的问题,如何判断一个属性是否存在于原型中:

如果一个属性存在,但是没有在对象本身中,则一定存在于原型中。

想学前端的同学们,可以来惠州北大青鸟新方舟校区详细了解。

标签:惠州前端培训学校惠州前端基础惠州前端培训北大青鸟IT计算机学校北大青鸟IT软件学校前端北大青鸟IT学校惠州北大青鸟北大青鸟


前端开发专业排行
标签列表
网站分类
文章归档
最近发表