码迷,mamicode.com
首页 > 编程语言 > 详细

javascript创建对象的相关问题

时间:2015-01-19 20:44:36      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:

javascript创建对象的方法有很多种,一般来说,推荐使用对象字面量来创建对象。

对象构造函数捕捉

使用new Object来创建对象,可能会带来一些问题:

var o = new Object();
console.log(o.constructor === Object);//true

var o = new Object(1);
console.log(o.constructor === Object);//false
console.log(o.constructor === Number);//true

var o = new Object("hi");
console.log(o.constructor === String);//true
console.log(typeof o.substring);//‘function‘

 

自定义构造函数
使用new创建对象时,首先创建一个空对象,然后将其[[prototype]]指向构造函数的原型对象,然后执行构造函数,将this的属性和方法添加到创建的空对象里面,最后隐形返回这个对象:

var Person = function(){
    //var this={};
    this.name = "Rose";
    this.sayName = function(){
        console.log("I am"+this.Name);
    };
    //return this;
};


 

构造函数的返回值:

var Person = function(){
    this.name = "Rose";
    var that = {};
    that.name = "Mary";
    return that;
};

var person = new Person();
console.log(person.name);//"Mary"

就是说,如果返回的是一个对象,将覆盖默认的对象,但是如果返回的不是对象,而是值,虽然不会造成错误,但是函数会忽略该值。

 

强制使用new的模式:

有时候,如果忘记使用new,将造成一些错误,为了避免这类错误,可以使用的写法:

var Person = function(nameStr){
    var that = {};
    that.name = nameStr;
    return that;
};

var girl = new Person("Mary");
console.log(girl.name);//"Mary"

var boy = Person("Mike");
console.log(boy.name);//"Mike"

 

javascript创建对象的相关问题

标签:

原文地址:http://www.cnblogs.com/linda586586/p/4234639.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!