猿问

一个很令人困惑的JS原型的问题?

今天在学习JS的原型时,遇到了一个很郁闷的问题,请看代码:

function Fn(a, b) {

  this.a = a

  this.b = b

}


/* 直接给函数对象添加属性 */

Fn.x = 'test'


Fn.hello = function () {

  console.log('hello')

}


/* 给构造函数添加属性 */

Fn.prototype.constructor.what = 'what?'


Fn.prototype.constructor.wtf = function () {

  console.log('wtf')

}


/* 给函数对象的原型对象添加属性 */

Fn.prototype.say = function () {

  console.log('say')

}


var f = new Fn('is a', function () {

  console.log('is b')

})


console.log(Fn.x); //test

console.log(Fn.hello()); //hello


console.log(Fn.a)

console.log(f.a)


console.log(Fn.what)

console.log(Fn.wtf())


console.log(Fn.b)

console.log(f.b())


console.log(Fn.say)

console.log(f.say())

输出的结果令人费解:

有些 undefined 是怎么出来的呢?

三国纷争
浏览 363回答 1
1回答
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答