宝哥软件园

js对象实例详解(对JavaScript对象的深度分析 对js对象的深度理解)

编辑:宝哥软件园 来源:互联网 时间:2021-09-03

这是一篇酝酿已久的文章。

JavaScript作为一种基于对象的语言(没有类的概念),从入门到掌握再到放弃,始终围绕着对象的问题。

通常文章主要是关于开发中遇到的问题和最佳解决方案的讨论,最后忍不住写了一篇关于基本概念的文章。

本文讨论以下问题。在座的朋友都有自己的需求。欢迎批评指正。

1.创建对象2,__proto__和prototype3,继承和原型链4,深度克隆对象5,对象的一些方法和注意事项6,ES6的新特性

实例对象和原型对象在下面重复提及。本文通过构造函数new称为实例对象,构造函数的原型属性称为原型对象。

创建对象

文字方式:

var my Honda={ color :‘red’,车轮: 4,发动机: {气缸: 4,尺寸: 2.2}}是new Object()的语法糖,也是一样的。

工厂模式:

函数create car(){ var oTemp=new Object();oTemp.name=参数[0];//直接给对象添加属性,每个对象都有一个直接属性otemp . age=arguments[1];otemp . show name=function(){ alert(this . name);};//每个对象都有一个showName方法版本返回oTemp};Var myHonda=createCar('honda ',5)只是包装了新的Object(),方便大批量生产。没有本质区别,所以可以看作是一种创造对象的方式。

构造器:

函数Person(姓名、年龄、性别){ this.name=namethis.age=年龄;this.sex=sexthis . getname=function(){ return this . name;};} var Rand=new Person(' Rand McKinnon ',33,' M ');上述构造函数的getName方法在每次实例化时都会创建一个新的函数对象,并且还会形成一个在当前情况下不用于eggs的闭包,所以构造函数添加方法按照以下方式处理。当工厂模式向对象添加方法时,还应该避免以下列方式重复构造函数对象。

函数Person(姓名、年龄、性别){ this.name=namethis.age=年龄;this.sex=sexthis.getName=getName }函数getName(){ return this . name;};构造函数创建对象的过程几乎与工厂模式相同,这相当于隐藏了创建新对象和返回对象的两个步骤。构造函数中的这个指向新创建的对象,这没有什么不同。

最大的区别是构造函数创建的对象的构造函数属性指向构造函数,工厂模式指向函数Object(){ 0.}.

构造函数相当于给原型链添加一个环。构造器有自己的原型,工厂模式是一个常见的函数。我最后一句话有漏洞。工厂模式的构造函数指向哪里取决于第一句话是新的。

如果直接调用构造函数而不是new,这取决于调用时它指向谁。如果直接调用,属性将绑定到窗口,如果通过调用或应用绑定到其他对象范围,属性将添加到对象中。

原型模式:

虽然构造器在原型链上加了一个环,但显然这个环里面什么都没有,那么它和工厂模式有什么区别呢?加戒指有什么意义?原型模式已经浮出水面。

函数Car(){} //用空构造函数设置类名Car . prototype . color=' blue ';//每个对象共享相同的属性car . prototype . doors=3;car . prototype . drivers=new Array(' Mike ',' John ');car . prototype . show color=function(){ alert(this . color);};//每个对象共享一个方法版本,节省内存。//构造函数的prototype属性可以通过文字量来设置。不要忘记将构造函数设置为构造函数function car(){ } car . prototype={ color : to object . defineperoperty()

更多资讯
游戏推荐
更多+