您的位置:首页 > Web前端 > JavaScript

【javascript笔记】js构造器<六>

2016-01-14 22:52 507 查看
原出处 请点击: click me

今天无意看到了一个题目,谁知被难住了

look at this

var fun = function(){
this.name = 'peter';
return {
name: 'jack'
};
}

var p = new fun();
//请问p.name是:


第二题

var fun = function(){
this.name = 'peter';
return 'jack';
}
var p = new fun();
//请问p.name是:


每个函数都有返回值,如果使用了return语句,则返回return后跟的值,如果没有使用return,则默认返回undefined.

特别的,如果这个函数是构造函数,则默认返回this对象,如果构造函数内使用了return语句,并且return后跟的是一个对象,则这个构造函数返回的是这个对象,这里指代的对象是toString.call(obj)==’[object Object]’ . 否则返回this.

所以1题中的p = {name: ‘jack’},而2题中的p = {name: ‘peter’}.

总结: 构造器(以 new FuncName形式) 得到的结果必然是个object. 请看这里mdn关于构造器的返回值介绍:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/this#构造函数中的_this
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: