object 对象 及原型原型链

object 对象 及原型原型链,第1张

满足两个条件 :

    1.无序的数据集合

    2.键值对的集合

使用Object.keys(obj) 可以得到obj的所有key

如何用变量做属性

delete obj.name   或者 delete obj['name']

请区分属性值为undefined 和不含属性名

不含属性名(查看是否含有属性名方法:'XXX' in obj === false)

含有属性名,但是值为undefined

"xxx" in obj &&obj.xxx ===undefined

查看自身所有属性

Object.keys(obj) //查看所有的key

Object.values(obj) //所有的value

Object.entries(obj) //key和value值 以数组形式查看

查看自身+共有属性 

console.dir(obj)  推荐用法

或者自己依次用Object.keys打印出obj.__proto__(不推荐,因为它里面的共有属性比较多)

判断一个属性是自身的还是共有的

obj.hasOwnProperty('toString')

总结:'name' in obj 和obj.hasOwnProperty('name')的区别:前者为查看是否有属性名 后者是判断一个属性是自身属性还是共有属性

修改属性 var obj={name:'frank' ,age:18}  修改属性直接obj.name重新赋值 写法 obj.name = 'lulu'

添加属性 obj.wuwuwu = 'wuwuwu'

批量添加属性 Object.assign(obj,{p1:1,p2:2,p3:3,p4:4})

比如上面的obj 我们可以通过修改它的obj.__proto__来修改原型  但是这种方法不推荐 一般推荐用另一种 window.Object.prototype 

window.Object.prototype=obj.__proto__   //true

对象的原型图

大家都知道,在js原型继承中,不赞成直接用Obj.__ proto __ 去改变一个原型

__ proto __ 低版本IE 无法使用

其实Object.create()也可以起到原型继承的作用

Object.create(obj_proto , prototObject) 是在 ES5中提出的一种新的对象创建方式.

它一共有两个参数,

第一个参数: 新创建对象的原型

第二个参数一组参数对象的属性和值,一般不用写.

先上一个 __ proto__继承的demo:

这就是一个简单的原型继承,起初anther_student不存在 run() 这个方法,但是

这句话将anther_student的原型指向了student , anther_student在 student 上继承了run()方法 ,

原型继承我们也可以用Object.create()实现

Object.create() 方法可以传入一个原型对象,并且创建一个基于该原型的新对象.

来个Object.create() 小demo

这样,Object.create() 就实现了一个简单的原型继承.


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11582988.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存