2012-06-23 49 views
1

我一直在使用的JavaScript如何使用JavaScript中的原型

function ComplexNumber(real,imaginary) { 
    this.real = real; 
    this.imaginary = imaginary; 
} 
ComplexNumber.prototype = { 
mult: function() { 
     var multiplier = arguments[0]; 
     if(arguments.length != 1) 
       multiplier = new ComplexNumber(arguments[0], arguments[1]); 
     return new ComplexNumber(this.real * multiplier.real - this.imaginary * multiplier.imaginary,      
     this.real * multiplier.imaginary + this.imaginary * multiplier.real);    
    }, 
toString: function() { 
     return this.real + " + " + this.imaginary + "j"; 
     } 
}, 
var complexA = new ComplexNumber(5, 8), 
complexB = new ComplexNumber(3, 4), 
complexSum = complexA.mult(complexB); 
console.log(complexSum.toString()); 

我要創建的複數我試圖分裂原型創建複雜功能的一個乘法將複雜的數字,但它沒有工作... 以下是我的div功能:

div : function(){ 
     var multiplier = arguments[0]; 
     if(arguments.length != 1) 
       multiplier = new ComplexNumber(arguments[0], arguments[1]); 

     return new ComplexNumber((this.real * multiplier.real - this.imaginary * multiplier.imaginary,      
     this.real * multiplier.imaginary + this.imaginary * multiplier.real)/(((this.real)*(this.real))) +((this.multiplier)*(this.multiplier))); 
    }, 
+2

在問題的每個答案旁邊,OP(你的問題)可以看到一個概括的選中標記。如果提供了合適的答案,請點擊此處查看所提供的最佳答案。您只能爲每個問題選擇一個答案,但您可以根據自己的喜好上下任意多個問題。 –

+0

最後一個'問題'應該是'答案',儘管你可以隨心所欲地提高/降低任意數量的問題(在每日限制內)。 –

回答

1

根據

(a+ib)/(c+id)=(ac+bd+i(bc-ad))/(c^2+d^2) 

配方,你需要這個:

var det = multiplier.real*multiplier.real + multiplier.imaginary * multiplier.imaginary; 
return new ComplexNumber(
    (this.real * multiplier.real + this.imaginary * multiplier.imaginary)/det,      
    (this.imaginary * multiplier.real - this.real * multiplier.imaginary)/det 
); 
+0

謝謝! (c + id)=(a + ib)(c + id)/(c^2 + d^2)=>(ac + adi + bci + bdi^2)/(c^2 + d^2) =>其中i^2 = root(-1) - > ie = -1表示我們的表達式爲: 當我們評估項(ac + adi + bci + bdi^2)/(c^2 + d^2):得到如下表達式: (ac + adi + bci-bd)/(c^2 + d^2) – pravin