今天在学习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 是怎么出来的呢?
相关分类