首页 > 代码库 > javascript权威指南笔记学习
javascript权威指南笔记学习
//返回了一个继承自原型对象p的属性的新对象 function inherit(p){ if (p ==null) throw TypeError(); if (Object.create){ return Object.create(p); } var t=typeof p; if (t!=="object"&&t!=="function") throw TypeError(); function f(){}; f.prototype=p; return new f(); }
属性访问错误
属性访问并不总是返回或设置一个值。查询一个不存在的属性并不会报错,如果在对象o自身的属性或继承的属性中均未找到这个属性x,属性访问表达式o.x返回undefine。回想一下我们的book对象有属性“sub-title”,而没有属性“subtitle”:
book.subtitle undefined
试图查询这个不存在的对象的属性就会报错。null和undefined值都没有属性,因为查询这些值的属性会报错,接上例:
//抛出一个类型错误异常,undefined没有length属性
var len=book.subtitle.length;
除非确定book和book.subtitle都是(或在行为上)对象。否则不能这样写表达式book。subtitle.length,因为这样会报错,下面提供了两种避免出错的方法。
var len=undefined;
if(book){
if(book.subtitle) len=book.subtitle.length;
}
var len=book&&book.subtitle&&book.subtitle.length;
//判断类型
function classof(o){if(o===null){retuen "Null"}if(o===undefined){return "Undefined"}return Object.prototype.toString().call(o).slice(8,-1)}
//赋值失败,但没报错,Object.prototype没有修改
删除属性
delete运算符,
delete book.author
delete book["main title"]
javascript权威指南笔记学习