Javascript继承扩展方法提示
我正在研究一种扩展方法,用JavaScript创建对象和函数的子类型。我很难理解这两条线到底有什么不同:Javascript继承扩展方法提示,javascript,Javascript,我正在研究一种扩展方法,用JavaScript创建对象和函数的子类型。我很难理解这两条线到底有什么不同: f、 原型=p f、 原型=新的p() 我能解释一下幕后到底发生了什么吗 我的理解是当我传入一个对象时,如果我使用“new p();”调用的构造函数可能不存在。这是正确的吗?有没有办法合并这些代码 function extend(p) { if (p == null) throw TypeError(); var f = function()
- f、 原型=p李>
- f、 原型=新的p()李>
function extend(p) {
if (p == null) throw TypeError();
var f = function() {},
t = typeof p;
if( t === 'object' ) {
f.prototype = p;
f.prototype.constructor = f;
return new f();
} else if( t === 'function' ) {
f.prototype = new p();
f.prototype.constructor = f;
return f;
} else {
throw TypeError();
}
}
// ==========================
var Person = {
firstName: 'John',
lastName: 'Doe'
};
console.log( 'Person: ', Person );
var Employee = extend( Person );
Employee.prototype = {
employeeID: 0
}
console.log( 'Employee: ', Employee );
var Manager = extend( Employee );
Manager.prototype.fireEveryone = function() {
alert( 'Everyone is fired!!!!' );
}
console.log( 'Manager: ', Manager );
谢谢虽然我也将急切地等待着看到回复这个问题的答案,但我建议您看看ECMAScript 5中引入的新继承/OOP机制,我认为它在JavaScript方面的作用更为一致 详情如下: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/defineProperty
Golmaal,在发布之前,我实际上已经看过这些了……然后看到了这一点:我使用的是不支持ECMAScript 5的IE8。我刚刚解决了这个问题