[英]Working with objects and creating methods in JavaScript that return values
這讓我發瘋,因為我在Google上找不到任何東西。 也許是因為我不知道正確的術語才能正確搜索。 但這就是我想要做的。
我想創建一個功能類似於對象的函數。 我認為這稱為方法,盡管我可能是錯的。
檢查一下,這是我想要執行的操作的偽代碼。
function myMethod(){
var p = this.getAttribute('x');
var p = p+1;
return p;
}
function otherFunction(){
var q = document.getElementByID('Element').myMethod();
alert(q);
}
因此,我無法使它正常工作。 一直在說myMethod()
是undefined
而不是函數。
如果希望myMethod
在元素上可用,則必須將其附加到元素的prototype上 。
Element.prototype.myMethod = myMethod;
prototype
的概念很大,但是可以歸結為這樣的事實,即函數實例以您描述為“像對象”的方式具有可用的函數。
在這種情況下,頁面上的任何元素都是Element
函數的實例。 因此,任何元素都將具有可用的.myMethod
,您可以調用它。 ( Element
是一個函數,盡管您實際上並沒有處理它-實例可用,因為您將它們放在HTML中,因此您可以使用Element
繞過。)
其次,如果您有var p
,則另一個var p
沒有多大意義。 只需使用p = p + 1
或p++
(添加一個的快捷方式)。
function myMethod(element){
var p = element.getAttribute('x');
var p = p+1;
return p;
}
function otherFunction(){
var q = myMethod(document.getElementByID('Element'));
alert(q);
}
顯然,最好不要在全局范圍內聲明它們,但基本上是javascript正在尋找myMethod()
,它是您所選擇的DOM元素的成員,但實際上您已經聲明了該函數獨立存在。
另一種選擇是通過原型繼承添加方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.