对象字面量
//定义一个空对象,这里的空指的是其自身属性为空,dog对象继承了Object.prototype的属性和方法
var dog={}
//添加属性/方法
dog.name="Beijing"
dog.getName= function(){
return this.name
}
//完全删除属性/方法
delete dog.name
自定义构造函数
用new操作符调用构造函数时,函数内部会发发生以下情况:
- 创建一个新对象,并且this引用了该对象并继承了该函数的原型
- 属性和方法被加入到this的引用中
- 新创建的对象由this引用最后隐式的返回this(或显式的返回其它对象)
var Person = function (name) {
//使用字面量的方法添加一个新对象
//var this = {}
//向this添加指定的方法和属性
this.name = name
//return this
}
自调用构造函数
构造函数的调用方法为new调用,但有时候我们会忘记用new操作,就会报undefinde,为了防止这个我们可以在构造函数中检查this是否为构造函数的实例,如果为否构造函数可以再次调用自身
function Preson(){
if(!(this instanceof Person)){
return new Person()
}
//一些操作
}
//另一种方法是于arguments.callee进行比较
if(!(this instanceof arguments.callee)){
return new arguments.callee()
}
每个函数内部,当该函数被调用时就会创建一个名为arguments的对象,该对象包含传递给该函数的所有参数,arguments对象有一个名为callee的函数,该函数会指向被调用的函数,需要注意的是ES5的严格模式不支持callee
检查数组性质
typeof(数组)会返回‘Object’,当我们需要名确一个对象是否为数组时,这个方法就不合适了
我们可以
1、instanceof Array
2、ES5定义的Array.isArray()
3、Object.prototype.toString()
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。