JavaScript菜鳥教程

JavaScript 對(duì)象

JavaScript 函數(shù)

JS HTML DOM

JS 瀏覽器BOM

AJAX 菜鳥教程

JavaScript 參考手冊(cè)

JavaScript 對(duì)象方法

方法是與對(duì)象,或者說(shuō)相關(guān)聯(lián)的函數(shù),一種方法是一個(gè)對(duì)象,它是函數(shù)的一個(gè)屬性。

方法的定義方式與常規(guī)函數(shù)的定義方式相同,不同之處在于必須將它們分配為對(duì)象的屬性。

訪問JavaScript方法

為了檢索對(duì)象方法,您將以與調(diào)用常規(guī)函數(shù)相同的方式對(duì)其進(jìn)行調(diào)用,只是將其附加到對(duì)象變量上。

// 創(chuàng)建對(duì)象
var user = {
  firstName: "Seagull",
  lastName : "an",
  age  : 22,
  location : "New Delhi",
  getName  : function() {
 return this.firstName + " " + this.lastName;
  }
};

//訪問getName()方法
user.getName();
測(cè)試看看?/?

如果訪問不帶()括號(hào)的方法,它將返回函數(shù)定義:

user.getName;
測(cè)試看看?/?

使用this作為對(duì)象引用

JavaScript有一個(gè)特殊的關(guān)鍵字this,您可以在方法中使用它來(lái)引用當(dāng)前對(duì)象。

您可能已經(jīng)注意到我們的方法有些奇怪。以這個(gè)為例:

  getName: function() {
   return this.firstName + " " + this.lastName;
  }

this關(guān)鍵字是指代碼被寫入內(nèi)部當(dāng)前對(duì)象-所以在這種情況下,this等同于user。

換句話說(shuō),this.firstName表示此對(duì)象的firstName屬性。

您可以在JS關(guān)鍵字教程JS中了解有關(guān)該this關(guān)鍵字的更多信息。

添加新方法

為了向?qū)ο筇砑有路椒?,您可以使用賦值運(yùn)算符(=)將新函數(shù)分配給屬性。

本示例向用戶對(duì)象添加“ greet”方法:

user.greet = function() {
    return "Hello World";
};
測(cè)試看看?/?

Getters和Setters

ECMAScript 5(2009)引入了Getters和Setters。

getter是一種獲取特定屬性值的方法。

setter是一種設(shè)置特定屬性值的方法。

您可以在支持添加新屬性的任何預(yù)定義核心對(duì)象或用戶定義對(duì)象上定義getter和setter。

JavaScript Getter(get關(guān)鍵字)

本示例使用get loc屬性作為location屬性的值:

//創(chuàng)建一個(gè)對(duì)象
var user = {
  firstName: "Seagull",
  lastName : "Anna",
  age  : 22,
  location : "New Delhi",
  get loc() {
     return this.location;
  }
};

//顯示來(lái)自對(duì)象的數(shù)據(jù)
document.getElementById("para").innerHTML = user.loc;
測(cè)試看看?/?

JavaScript Setter(set關(guān)鍵字)

本示例使用set loc屬性作為location屬性的值:

// 創(chuàng)建對(duì)象
var user = {
  firstName: "Seagull",
  lastName : "Anna",
  age  : 22,
  location : "New Delhi",
  set loc(x) {
     this.location = x;
  }
};

// 使用setter設(shè)置對(duì)象屬性
user.loc = "Goa";

// 顯示來(lái)自對(duì)象的數(shù)據(jù)
document.getElementById("para").innerHTML = user.location;
測(cè)試看看?/?

Function 函數(shù) 和  Getter 之間的區(qū)別?

以下兩個(gè)示例顯示了function 和 getter之間的區(qū)別:

示例1(使用功能):
//創(chuàng)建對(duì)象
var user = {
  firstName: "Seagull",
  lastName : "Anna",
  age  : 22,
  location : "New Delhi",
  fullName : function() {
      return this.firstName + " " + this.lastName;
  }
};

// 顯示來(lái)自對(duì)象的數(shù)據(jù)
document.getElementById("para").innerHTML = user.fullName();
測(cè)試看看?/?
示例2(使用Getter):
// 創(chuàng)建對(duì)象
var user = {
  firstName: "Seagull",
  lastName : "Anna",
  age  : 22,
  location : "New Delhi",
  get fullName() {
     return this.firstName + " " + this.lastName;
  }
};

//顯示來(lái)自對(duì)象的數(shù)據(jù)
document.getElementById("para").innerHTML = user.fullName;
測(cè)試看看?/?

示例1 將fullName作為函數(shù)訪問:user.fullName()。

示例2 將fullName作為屬性訪問:user.fullName。

使用Getters 和 Setters:

  • 它提供了更簡(jiǎn)單的語(yǔ)法

  • 它允許屬性和方法的語(yǔ)法相同

  • 它可以確保更好的數(shù)據(jù)質(zhì)量

  • 對(duì)于后端處理很有用

Object.defineProperty()

Object.defineProperty()方法還可以用于添加Getter和Setter。

語(yǔ)法:
Object.defineProperty(object, property, {value : value})

讓我們以“計(jì)數(shù)器”對(duì)象為例:

var counter = {i : 0};

Object.defineProperty(counter, "increment", { 
   get: function() {this.i++;},
});

Object.defineProperty(counter, "decrement", { 
   get: function() {this.i--;},
});

Object.defineProperty(counter, "reset", { 
   get: function() {this.i = 0;},
});

Object.defineProperty(counter, "add", {
   set: function (value) {this.i += value;}
});

Object.defineProperty(counter, "subtract", {
   set: function (value) {this.i -= value;}
});

counter.reset;
counter.add = 25;
counter.increment;
測(cè)試看看?/?
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清