文享日志

函数的new与不new

JavaScript

发表于2017年08月10日13:15:41

0条评论 268次阅读

        比如Array()函数,可以new来创建,也可以不用new。下面的例子,用来判断这是new出来的,还是直接写出来的。原理就是new出来的对象,this指向当前这个对象,没new的指向window(浏览器端)。

var Person = function(name){
                        if(!(this instanceof Person)){
                                return new Person(name);
                        }
                        this.name = name;
                    }

var p1 = new Person('laoyao');
alert(p1.name);

var p2 = Person('xxx');
alert(p2.name); 

p1与p2经过Person函数,都变成了new出来的Person对象。


当遇到某些不需要new的函数时,也可以用    this instanceof obj来判断,如下这个例子。

var MyAlert = function(str){
                        if(this instanceof MyAlert){
                                throw new Error("MyAlert is not a constructor");
                        }
                        alert(str);
                    }
MyAlert(111);//弹出
new MyAlert(222);//报错

👍 0  👎 0
共有0条评论

发表新评论

提交

广告展示

腾讯云推广 阿里云推广