欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

详解js创建对象的几种方式和对象方法

程序员文章站 2022-05-10 14:08:29
这篇文章是看js红宝书第8章,记的关于对象的笔记(第二篇)。创建对象的几种模式:工厂模式:工厂是函数的意思。工厂模式核心是定义一个返回全新对象的函数。缺点:不知道新创建的对象是什么类型构造函数模式:通...

这篇文章是看js红宝书第8章,记的关于对象的笔记(第二篇)。

创建对象的几种模式:

工厂模式:

工厂是函数的意思。工厂模式核心是定义一个返回全新对象的函数。

缺点:不知道新创建的对象是什么类型

构造函数模式:

通过一个构造函数,得到一个对象实例。
构造函数和工厂模式区别是:
1,构造函数函数体加了this
2,构造函数没有return
3,构造函数调用时,用new关键字

关于构造函数的两个问题:

1,构造函数和普通函数唯一区别是调用方式。构造函数要用new关键字。如果不用new,则是往global对象上加属性。下面例子中,createobj方法,往window对象上加了name和age属性

2,构造函数存在的问题: 构造函数体内的方法,每次创建一个实例,都会创建一遍。

解决方法是,将sayname定义在createobj外面。

但是,这样会让自定义类型引用的代码不能很好聚在一起。

原型模式:

原理是,每个函数都有一个prototype属性。prototype是一个对象,里面定义的属性和方法会被所有实例共享。
关于原型模式,有两个等式:

关于原型对象的三个方法:isprototype , getprototypeof,setprototypeof, object.create()

当访问一个对象person的name属性时,是按照以下步骤去访问:
1,person上如果有name属性(即便这个属性是null,也会返回null),返回name属性值;没有,继续去原型对象person.prototype上找
2,如果原型上有name属性,返回原型上name属性值;没有,则返回undefined

判断一个属性是在实例上,还是在原型上,可以用hasownproperty

判断一个对象上是否有个某个属性,用in操作符

访问对象的属性的方法:

其他访问对象属性和属性值的方法:
object.values( ) 对象值组成的数组,会省掉symbol型。
object.entries( ) 对象键值对组成的数组,会将键,转化成字符串,省掉symbol型。

到此这篇关于详解js创建对象的几种方式和对象方法的文章就介绍到这了,更多相关js创建对象内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!