对象字面量

//定义一个空对象,这里的空指的是其自身属性为空,dog对象继承了Object.prototype的属性和方法
var dog={}

//添加属性/方法
dog.name="Beijing"
dog.getName= function(){
    return this.name
}
//完全删除属性/方法
delete dog.name

自定义构造函数

用new操作符调用构造函数时,函数内部会发发生以下情况:

  1. 创建一个新对象,并且this引用了该对象并继承了该函数的原型
  2. 属性和方法被加入到this的引用中
  3. 新创建的对象由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()


ZONE_98F
357 声望27 粉丝