-
属性读写,异常,删除,检测,枚举 处理异常,判断属性是否存在: 1.if(obj.x){//do sth} 2.var yz = obj && obj.y && obj.y.z; 属性删除:delete var a = {x:1, y:2} delete a.x; 注意: 1. 原始属性是不会删除,例prototype 2. 用var定义的全局变量和局部变量是不会被删除 3. 函数是不会被删除 属性检测 in 检测是否存在某个对象,(原型链上的也会被检测出来) var cat = new Object; cat.name = "mimi"; "name" in cat//true "abc" in cat//false "toString" in cat; //true 原型链属性 cat.hasOwnProperty("name")//true 判断某个属性是否为元素的自身属性 cat.propertyIsEnumerable("toString")//false 判断某个属性是否可枚举(遍历) Object.defineProperty(cat,"name",{enumerable:true,value:"mimi"})//通过defineProperty可以改变原型链属性状态 属性枚举 for(key in cat){console.log(key)//name} //for in只能遍历可枚举属性查看全部
-
6.模块化查看全部
-
5.defineproperty查看全部
-
4.抽象类查看全部
-
3.链式调用 return this查看全部
-
2.调用子类查看全部
-
1.模拟重载 if判断是否是object 并且不为空查看全部
-
继承的三种方式 建议第三种在新建的空对象,把它的原型链指向,这样修改就不会有问题。 es5以下不支持,右边是一个封装处理。查看全部
-
(对象)instanceof (函数) window或iframe间不能检测查看全部
-
obj.toString obj.hasOwnProperty是Object.prototype上的属性查看全部
-
for in 会把原型链上的东西都遍历出来 使用es5 的新属性 definePoperty 不可枚举查看全部
-
这里的意思是原型链不能更新嘛? 我是这样理解的,x是在Student的原型链的那个对象上修改就有效果,y是直接在原型链上修改所以只能通过new 才能有效果。查看全部
-
bind也是函数 但是bind没有原型链查看全部
-
所以的对象原型都指向 Object.prototype(但是null 就不行。) Object.create(null)建立一个空对象把原型链指向null,null没有原型链;查看全部
-
刚刚栗子的原型链图查看全部
举报
0/150
提交
取消