2011-02-16 47 views
0

這是一個例子。javascript函數結構

var x=5; 
var y=x.multiplied(6); // return y=30; 

如何在js上創建類似.multiplied()函數的函數?

功能結構是這樣的

var1.doSomething(var2); 

回答

2
 

function myInteger(setVal) { 
this.value = setVal; 
} 

myInteger.prototype.multiple(mult) { 
return this.value * mult; 
// Or 
// return new myInteger(this.value * mult); 
} 

var x = new myInteger(5) 
var y = x.multiple(6); 
+0

做我有指定像這樣的變量ar x = new myInteger(5)?我不能只指定var = 5;像另一個js函數?... – theHack 2011-02-16 09:33:49

1

需要延長Number對象這樣的..

var x = Number(5); 
Number.prototype.multiplied = function(a) {return this * a;}; 
1

如果你想創建FN像相乘,你需要擴展在以下情況下,您需要擴展Native類型的原型,例如

Number.prototype.multiplied = function(n){ 
    return this*n; 
} 

var x=5; //x is a Number 
var y=x.multiplied(6); // return this*6 => this is x => that is 5 => 5*6 = 30; 

一般來說,如果你有var1.doSomething(var2);和VAR1是一個對象,你可以用這種方式

function myObject(name){ 
    if(!(this instanceof myObject)){ // in the case you're missing 'new' when you declare a myObject instance 
     return new myObject(name); 
    } 
    this.name = name; //field 
    this.doSomething = function(param){ //method 
     alert('done '+param+' '+this.name); 
    } 
} 
var var1 = new myObject('peter'); 
var var2 = "string"; 
var1.doSomething(var2); //alerts "done string peter" 

var var3 = myObject('jean'); //don't need 'new' 
var var4 = "homework"; 
var3.doSomething(var4); //alerts "done homework jean" 

VAR1也可以是一般的「圖書館」定義「方法」,你可以這樣定義它:

var var1 = { 
    doSomething : function(param){ 
     alert('done ' + param); 
    } 
} 
//you don't need to instantiate a new object. You have a static library 
var var2 = "mystring"; 
var1.doSomething(var2); //alerts "done mystring"