2013-04-25 102 views
0

我有這樣的代碼,當我使用display方法也不斷給我:未定義的對象方法

網址是不確定的

名稱是不確定的

描述是不確定的

我不知道爲什麼我會得到錯誤,即使我提供它將所有的p roprieties。有人可以爲我確定問題嗎?

function website(name,url,description) 
{ 
    //Proparties 
    this.name=name; 
    this.url=url; 
    this.description=description; 

    // Methods 
    this.getName=getName; 
    this.getUrl=getUrl; 
    this.getDescription=getDescription; 
    this.display=display; 

    // GetName Method 
    function getName(name) 
    { 
     this.getName=name; 
    } 

    // GetUrl Method 
    function getUrl(url){ 
     this.getUrl=url; 
    } 

    // getDescription 
    function getDescription(description){ 
     this.getDescription=description; 
    } 

    function display(name,url,description){ 
     alert("URL is :" +url +" Name Is :"+name+" description is: "+description); 
    } 
} 

// Set Object Proparites 
web=new website("mywebsite","http://www.mywebsite.com","my nice website"); 

// Call Methods 
var name = web.getName("mywebsite"); 
var url = web.getUrl("http://www.mywebsite.com"); 
var description = web.getDescription("my nice website"); 
web.display(name,url,description); 
+0

使用它們之前聲明變量 – 2013-04-25 09:57:59

+7

你'getX'功能實際上是制定者和返回什麼? – Bergi 2013-04-25 09:58:18

回答

1

你的getter函數是覆蓋自己(?)的setter。改變他們

function getName(){ 
    return this.name; 
} 
function getUrl(){ 
    return this.url; 
} 
function getDescription(){ 
    return this.description; 
} 

function setName(name){ 
    this.name = name; 
} 
function setUrl(url){ 
    this.url = url; 
} 
function setDescription(description){ 
    this.description = description; 
} 

如果你希望你的制定者返回設定值時,分配前補充return關鍵字。

1

你想寫這個嗎? :

function setName(name) 
{ 
    this.name=name; 
} 

據我所知,你是設置,而不是獲得屬性。所以:

var name = web.setName("mywebsite"); 
1

我被宣佈作爲

function() { 
    //property 
    this.name 

    //method 
    this.setName = function (name) { 
    this.name = name 
    } 
} 

他們這樣你實現它,詢問上下文問題

2

我是覺得你很困惑的功能是如何工作的。在你的代碼中有:

this.getName=getName; // this sets a "getName" method on the "this" object 
// to be some function that will be implemented below 

function getName(name) // i believe this function shouldn't have any parameter... 
{ 
this.getName=name; //now, you're overriding the "getName" that you set above, 
// to be something completely different: the parameter you sent when calling this function! 
// instead, you should do: 
return name; 
} 
1

你的獲得者應該返回一個值,而不是重新指派吸氣者本身,例如

function getName() { 
    return this.name; 
} 
0

你應該做返回的值作爲每個方法如下:

// GetName Method 
function getName() { 
    return this.getName = name; 
} 

// GetUrl Method 
function getUrl() { 
    return this.getUrl = url; 
} 

// GetDescription Method 
function getDescription() { 
    return this.getDescription = description; 
}