[英]JavaScript getter and setter
這是一個非常基本的問題,我確定它是重復的,所以我事先表示歉意,但這就是我寫一個這樣使用的對象的方式:
myApplication.myFirstMethod(x);
x = myApplication.myFirstMethod();
這是代碼:
myApplication = {};
(function() {
myApplication.myFirstMethod = function() {
var local = {};
if (arguments.length) {
local.result = arguments[0];
}
return local.result;
}
myApplication.mySecondMethod = function() {
var local = {};
if (arguments.length) {
local.result = arguments[0];
}
return local.result;
}
})();
更加面向對象的方法是使用實例化和原型。
設定
var Application = function(){
this.local = {};
};
Application.prototype.Value = function(){
if (arguments.length) {
this.local.result = arguments[0];
}else{
return this.local.result;
}
};
用過的
var app = new Application();
app.Value(6);
alert(app.Value());//6
從jQuery的角度來看,他們將首先進行篩選以查看是否有參數,此代碼直接來自其源代碼中的val
函數:
val: function( value ) {
if ( !arguments.length ) {
var elem = this[0];
...
然后,它繼續使用元素的本機API和其他一些指標來獲取元素的值(通常,唯一會從val
返回值的元素類型將是諸如input
, select
等的元素。 -基本上是表單元素)。
在if
塊的末尾,它嘗試根據是否找到附加到該元素(或元素集)的值來返回各種結果。 這樣可以保證在遇到“獲取”時,“設置”子句不會執行。 如果情況是正在使用“集合”,則它會通過一組稍微復雜的代碼來為元素正確設置一個值。
該代碼顯示val: function()
的原因是因為它是對象的一部分,該對象用於使用jQuery的extend
功能來“擴展” jQuery原型。
創建這樣的對象的模式很多,每個人都有自己的收藏夾。 Addy Osmani在總結Javascript設計模式“書”中的最流行模式方面做得非常出色。 具體來說,本節:
http://addyosmani.com/resources/essentialjsdesignpatterns/book/#designpatternsjavascript
我每半年重讀一次,以確保將所有模式保留在顫動中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.