2017-01-26 48 views
1
function Person() { 
} 
Function.prototype.subfuncname = function(name) { 
    var old = this[name]; 
    this[name] = function() { 
    console.log('testing'); 
    } 
} 
Person.subfuncname("test"); 
var pe = new Person(); 

pe.test('test'); 

期望得到「測試」,但得到一個錯誤(pe.test不是一個函數)的Javascript子函數錯誤

請幫

+0

請您可以包括你的 '人' 的定義是什麼? – Calum

+0

感謝您的回覆,我添加了代碼 – user3035661

+0

測試在哪裏定義? – Hosar

回答

1

只是糾正你的代碼。

而不是

this[name]=function(){ 
    console.log('testing'); 
} 

使其

this.prototype[name]=function(){ 
    console.log('testing'); 
} 

那會做的伎倆。

function Person(){ 
 
    
 
} 
 
    
 
Function.prototype.subfuncname=function(name){ 
 
    
 
    this.prototype[name]=function(){ 
 
     alert('It works!'); 
 
    } 
 
    } 
 
    
 
Person.subfuncname("test"); 
 
var pe=new Person(); 
 
    
 
pe.test('test');

0

你需要得到預期的結果是唯一的代碼:

function Person() { 
 
    this.test = function(string) { 
 
     console.log(string); 
 
    } 
 
    } 
 
    var pe = new Person(); 
 
    pe.test('testing');

如果你想在功能Person對象,你也可以做到這一點的原型:

function Person() { 
 

 
} 
 

 
Person.prototype.test = function(string) { 
 
    console.log('testing'); 
 
} 
 

 
var pe = new Person(); 
 
pe.test('test');

1

您必須添加subfuncname功能Person對象的原型。還必須在實例上調用subfuncname

function Person() {} 
Person.prototype.subfuncname = function(name) { 
    var old = this[name]; 
    this[name] = function() { 
    console.log('testing'); 
    }; 
}; 
var pe = new Person(); 
pe.subfuncname("test"); 
pe.test('test'); 
0
function Person(){ 

} 

Person.prototype.subfuncname = function (txt) { 
    console.log(txt); 
    alert(txt); 
}; 

var pe=new Person(); 
pe.subfuncname("Jason"); 

Test case