js深入浅出学习笔记(一)

页面导航:首页 > 网络编程 > JavaScript > js深入浅出学习笔记(一)

js深入浅出学习笔记(一)

来源: 作者: 时间:2016-02-02 09:58 【

js深入浅出一 new Foo()创建的对象: 1 该对象的原型会指向Foo 的构造器的prototype属性; 好处是 如果访问该对象的属性时,如果该对象不存在,会继续根据原型链查找Foo的prototype属性上的
js深入浅出 一. new Foo()创建的对象: 1.该对象的原型会指向Foo 的构造器的prototype属性; 好处是 如果访问该对象的属性时,如果该对象不存在,会继续根据原型链查找Foo的prototype属性上的值; 2. 用 in 来判断该属性是否属于该对象时,是true,意思是该属性是该对象的原型链上的; 3. 给该对象的属性赋值时,会先查找原型链上是否存在该属性则修改,如果不存在,则只在该对象增加一个属性并赋值; 4. 用hasOwnProperty来判断该属性是否存在对象上还是原型链上;delete也只能删除对象上的属性,不会影响原型链上的属性; 5.用var obj=object.create({x:1})创建对象,该对象的原型指向参数,即obj.x=1; 而用字面量创建的对象的原型是object.prototype 二. 操作属性 1.for in 遍历属性时,有可能把原型链上的属性遍历出来,并且是无序的 2.delete 删除属性时,返回的ture表明这个对象已经没有该属性了,而不是删除成功的意思; 3.var descriptor = Object.getOwnPropertyDescriptor(Object,'prototype')属性描述器 4.隐式创建的全局变量,也可以用delete删除, 例如 i=1,delete i; 在eval()里用var创建的对象,也可以删除 5.propertyIsEnumerable()该属性是否可以被遍历 6.自定义属性可枚举 Object.defineProperty(cat,'price',{enumerable:false,value:100}), 用new或者字面量创建的对象或者赋值给属性时,默认都是可写可枚举的(标签全都是true),用define,则默认全是false 7. 在var obj = Object.defineProperty(Foo.prototype,'z',{get:function(){return {value:1}}})给某个原型链上的属性赋值(用get方法赋值),然后再给该obj.z赋值,是不成功的;也不会在obj上创建这个属性;要想赋值也只能通过obj.defineProperty 8.Object.keys()也是遍历 9. 属性标签:configurable=true,则可用defineProperty修改值或者其它属性标签,并且可以使用delete删除属性; 如果wirtable=true,则可直接使用obj.z来直接赋值 10. 对象标签:proto,class,extension--isExtensible()或者preventExtensions(),seal()比preventExtensions()更进一步,它把所有已有属性的configurable标签都改为false;而freeze()最牛,把所有的属性标签都是设置为false 11. 对象序列化:JSON.stringfy()
\
JSON.parse()解析,但是要求所有属性都加双引号 \
12. valueOf() \
Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<