JavaScript ç设计æ¯ä¸ä¸ªç®åçåºäºå¯¹è±¡çèå¼ãä¸ä¸ªå¯¹è±¡å°±æ¯ä¸ç³»å屿§çéåï¼ä¸ä¸ªå±æ§å å«ä¸ä¸ªååä¸ä¸ªå¼ãä¸ä¸ªå±æ§çå¼å¯ä»¥æ¯å½æ°ï¼è¿ç§æ åµä¸å±æ§ä¹è¢«ç§°ä¸ºæ¹æ³ãé¤äºæµè§å¨éé¢é¢å®ä¹çé£äºå¯¹è±¡ä¹å¤ï¼ä½ ä¹å¯ä»¥å®ä¹ä½ èªå·±çå¯¹è±¡ãæ¬ç« èè®²è¿°äºæä¹ä½¿ç¨å¯¹è±¡ã屿§ã彿°åæ¹æ³ï¼ææ ·å®ç°èªå®ä¹å¯¹è±¡ã
对象æ¦è¿°javascript ä¸ç对象 (ç©ä½)ï¼åå ¶ä»ç¼ç¨è¯è¨ä¸çå¯¹è±¡ä¸æ ·ï¼å¯ä»¥æ¯ç §ç°å®çæ´»ä¸ç对象 (ç©ä½) æ¥çè§£å®ãjavascript ä¸å¯¹è±¡ (ç©ä½) çæ¦å¿µå¯ä»¥æ¯ç §çç°å®çæ´»ä¸å®å®å¨å¨çç©ä½æ¥çè§£ã
å¨ javascript ä¸ï¼ä¸ä¸ªå¯¹è±¡å¯ä»¥æ¯ä¸ä¸ªåç¬çæ¥æå±æ§åç±»åçå®ä½ãæä»¬æ¿å®åä¸ä¸ªæ¯ååä¸ç±»æ¯ãä¸ä¸ªæ¯åæ¯ä¸ä¸ªå¯¹è±¡ (ç©ä½)ï¼æ¥æå±æ§ãæ¯åæé¢è²ï¼å¾æ¡ï¼ééï¼ç±ä»ä¹æè´¨ææççãåæ ·ï¼javascript å¯¹è±¡ä¹æå±æ§æ¥å®ä¹å®çç¹å¾ã
对象å屿§ä¸ä¸ª javascript 对象æå¾å¤å±æ§ãä¸ä¸ªå¯¹è±¡ç屿§å¯ä»¥è¢«è§£éæä¸ä¸ªéå å°å¯¹è±¡ä¸çåéã对象ç屿§åæ®éç javascript åéåºæ¬æ²¡ä»ä¹åºå«ï¼ä» ä» æ¯å±æ§å±äºæä¸ªå¯¹è±¡ã屿§å®ä¹äºå¯¹è±¡çç¹å¾ãä½ å¯ä»¥éè¿ç¹ç¬¦å·æ¥è®¿é®ä¸ä¸ªå¯¹è±¡ç屿§ã
åå ¶ä» javascript åé䏿 ·ï¼å¯¹è±¡çåå (å¯ä»¥æ¯æ®éçåé) å屿§çåå齿¯å¤§å°åææçãä½ å¯ä»¥å¨å®ä¹ä¸ä¸ªå±æ§çæ¶åå°±ç»å®èµå¼ãä¾å¦ï¼æä»¬å建ä¸ä¸ª myCar ç对象ç¶åç»ä»ä¸ä¸ªå±æ§ï¼makeï¼modelï¼yearãå ·ä½å¦ä¸æç¤ºï¼
var myCar = new Object();
myCar.make = "Ford";
myCar.model = "Mustang";
myCar.year = 1969;
å¯¹è±¡ä¸æªèµå¼ç屿§çå¼ä¸ºundefined
ï¼è䏿¯null
ï¼ã
myCar.noProperty; // undefined
JavaScript 对象ç屿§ä¹å¯ä»¥éè¿æ¹æ¬å·è®¿é®æè
è®¾ç½®ï¼æ´å¤ä¿¡æ¯æ¥ç property accessorsï¼. å¯¹è±¡ææ¶ä¹è¢«å«ä½å
³èæ°ç»ï¼å 为æ¯ä¸ªå±æ§é½æä¸ä¸ªç¨äºè®¿é®å®çå符串å¼ãä¾å¦ï¼ä½ å¯ä»¥æå¦ä¸æ¹å¼è®¿é® myCar
对象ç屿§ï¼
myCar["make"] = "Ford";
myCar["model"] = "Mustang";
myCar["year"] = 1969;
ä¸ä¸ªå¯¹è±¡ç屿§åå¯ä»¥æ¯ä»»ä½ææç JavaScript åç¬¦ä¸²ï¼æè å¯ä»¥è¢«è½¬æ¢ä¸ºå符串çä»»ä½ç±»åï¼å æ¬ç©ºå符串ãç¶èï¼ä¸ä¸ªå±æ§çåç§°å¦æä¸æ¯ä¸ä¸ªææç JavaScript æ è¯ç¬¦ï¼ä¾å¦ï¼ä¸ä¸ªç±ç©ºæ ¼æè¿åç¬¦ï¼æè 以æ°åå¼å¤´ç屿§åï¼ï¼å°±åªè½éè¿æ¹æ¬å·æ 记访é®ãè¿ä¸ªæ è®°æ³å¨å±æ§åç§°æ¯å¨æå¤å®ï¼å±æ§ååªæå°è¿è¡æ¶æè½å¤å®ï¼æ¶é常æç¨ãä¾å¦ï¼
// åæ¶å建å个åéï¼ç¨éå·åé var myObj = new Object(), str = "myString", rand = Math.random(), obj = new Object(); myObj.type = "Dot syntax"; myObj["date created"] = "String with space"; myObj[str] = "String value"; myObj[rand] = "Random Number"; myObj[obj] = "Object"; myObj[""] = "Even an empty string"; console.log(myObj);
请注æï¼æ¹æ¬å·ä¸çææé®é½å°è½¬æ¢ä¸ºå符串类åï¼å 为 JavaScript ä¸ç对象åªè½ä½¿ç¨ String ç±»åä½ä¸ºé®ç±»åãä¾å¦ï¼å¨ä¸é¢ç代ç ä¸ï¼å½å°é® obj æ·»å å° myObj æ¶ï¼JavaScript å°è°ç¨ obj.toString() æ¹æ³ï¼å¹¶å°æ¤ç»æå符串ç¨ä½æ°é®ã
ä½ ä¹å¯ä»¥éè¿åå¨å¨åéä¸çå符串æ¥è®¿é®å±æ§ï¼
var propertyName = "make";
myCar[propertyName] = "Ford";
propertyName = "model";
myCar[propertyName] = "Mustang";
ä½ å¯ä»¥å¨ for...in è¯å¥ä¸ä½¿ç¨æ¹æ¬å·æ 记以æä¸¾ä¸ä¸ªå¯¹è±¡çææå±æ§ã为äºå±ç¤ºå®å¦ä½å·¥ä½ï¼ä¸é¢ç彿°å½ä½ å°å¯¹è±¡åå ¶åç§°ä½ä¸ºåæ°ä¼ å ¥æ¶ï¼æ¾ç¤ºå¯¹è±¡ç屿§ï¼
function showProps(obj, objName) {
var result = "";
for (var i in obj) {
if (obj.hasOwnProperty(i)) {
result += objName + "." + i + " = " + obj[i] + "\n";
}
}
return result;
}
å èï¼å¯¹äºå½æ°è°ç¨ showProps(myCar, "myCar")
å°è¿å以ä¸å¼ï¼
myCar.make = Ford;
myCar.model = Mustang;
myCar.year = 1969;
æä¸¾ä¸ä¸ªå¯¹è±¡çææå±æ§
ä» ECMAScript 5 å¼å§ï¼æä¸ç§åççæ¹æ³ç¨äºååºææä¸¾å¯¹è±¡ç屿§ï¼
o
èªèº«å
å«ï¼ä¸å
æ¬ååä¸ï¼çææå¯æä¸¾å±æ§çåç§°çæ°ç»ão
èªèº«å
å«ï¼ä¸å
æ¬ååä¸ï¼çææå±æ§ (æ 论æ¯å¦å¯æä¸¾) çåç§°çæ°ç»ãå¨ ECMAScript 5 ä¹åï¼æ²¡æåççæ¹æ³æä¸¾ä¸ä¸ªå¯¹è±¡çææå±æ§ãç¶èï¼å¯ä»¥éè¿ä»¥ä¸å½æ°å®æï¼
function listAllProperties(o) {
var objectToInspect;
var result = [];
for (
objectToInspect = o;
objectToInspect !== null;
objectToInspect = Object.getPrototypeOf(objectToInspect)
) {
result = result.concat(Object.getOwnPropertyNames(objectToInspect));
}
return result;
}
è¿å¨å±ç¤ºâéèâï¼å¨ååä¸çä¸è½éè¿å¯¹è±¡è®¿é®ç屿§ï¼å 为å¦ä¸ä¸ªååç屿§åå¨äºååé¾çæ©æï¼ç屿§æ¶å¾æç¨ãå¦æåªæ³ååºå¯è®¿é®ç屿§ï¼é£ä¹åªéè¦å»é¤æ°ç»ä¸çéå¤å ç´ å³å¯ã
å建æ°å¯¹è±¡JavaScript æ¥æä¸ç³»åé¢å®ä¹ç对象ãå¦å¤ï¼ä½ å¯ä»¥åå»ºä½ èªå·±ç对象ãä» JavaScript 1.2 ä¹åï¼ä½ å¯ä»¥éè¿å¯¹è±¡åå§åå¨ï¼Object Initializerï¼å建对象ãæè
ä½ å¯ä»¥å建ä¸ä¸ªæé 彿°å¹¶ä½¿ç¨è¯¥å½æ°å new
æä½ç¬¦åå§å对象ã
é¤äºéè¿æé 彿°å建对象ä¹å¤ï¼ä½ ä¹å¯ä»¥éè¿å¯¹è±¡åå§åå¨å建对象ã使ç¨å¯¹è±¡åå§åå¨ä¹è¢«ç§°ä½éè¿åé¢å¼å建对象ã对象åå§åå¨ä¸ C++ æ¯è¯ç¸ä¸è´ã
éè¿å¯¹è±¡åå§åå¨å建对象çè¯æ³å¦ä¸ï¼
var obj = {
property_1: value_1, // property_# å¯ä»¥æ¯ä¸ä¸ªæ è¯ç¬¦...
2: value_2, // æä¸ä¸ªæ°å...
["property" + 3]: value_3, // æä¸ä¸ªå¯è®¡ç®ç key å...
// ...,
"property n": value_n,
}; // æä¸ä¸ªå符串
è¿é obj
æ¯æ°å¯¹è±¡çåç§°ï¼æ¯ä¸ä¸ª property_i
æ¯ä¸ä¸ªæ è¯ç¬¦ï¼å¯ä»¥æ¯ä¸ä¸ªåç§°ãæ°åæå符串åé¢éï¼ï¼å¹¶ä¸æ¯ä¸ª value_i
æ¯ä¸ä¸ªå
¶å¼å°è¢«èµäº property_i
ç表达å¼ãobj
ä¸èµå¼æ¯å¯éçï¼å¦æä½ ä¸éè¦å¨å
¶ä»å°æ¹å¼ç¨å¯¹è±¡ï¼ä½ å°±ä¸éè¦å°å®èµç»ä¸ä¸ªåéãï¼æ³¨æå¨æ¥å䏿¡è¯å¥çå°æ¹ï¼ä½ å¯è½éè¦å°å¯¹è±¡åé¢éæ¬å¨æ¬å·éï¼ä»èé¿å
å°åé¢éä¸åè¯å¥ç¸æ··æ·ï¼
妿ä¸ä¸ªå¯¹è±¡æ¯éè¿å¨é¡¶çº§èæ¬ç对象åå§åå¨å建çï¼å JavaScript 卿¯æ¬¡éå°å å«è¯¥å¯¹è±¡åé¢éçè¡¨è¾¾å¼æ¶é½ä¼å建对象ãåæ ·çï¼å¨å½æ°ä¸çåå§åå¨å¨æ¯æ¬¡å½æ°è°ç¨æ¶ä¹ä¼è¢«å建ã
ä¸é¢çè¯å¥åªæå½ cond
表达å¼çå¼ä¸º true
æ¶å建对象并å°å
¶èµç»åé x
ã
if (cond) var x = { hi: "there" };
ä¸ä¾åå»ºäºæä¸ä¸ªå±æ§ç myHonda
å¯¹è±¡ãæ³¨æå®ç engine
屿§ä¹æ¯ä¸ä¸ªæ¥æèªå·±å±æ§ç对象ã
var myHonda = { color: "red", wheels: 4, engine: { cylinders: 4, size: 2.2 } };
ä½ ä¹å¯ä»¥ç¨å¯¹è±¡åå§å卿¥å建æ°ç»ãåè§æ°ç»åé¢é
å¨ JavaScript 1.1 åæ´æ©çæ¬ä¸ï¼ä½ ä¸è½ä½¿ç¨å¯¹è±¡åå§åå¨ãä½ åªè½éè¿ä½¿ç¨æé 彿°æå ¶ä»å¯¹è±¡ç彿°æ¥å建对象ãåè§ ä½¿ç¨æé 彿°.
ä½¿ç¨æé 彿°ä½ä¸ºå¦ä¸ç§æ¹å¼ï¼ä½ å¯ä»¥éè¿ä¸¤æ¥æ¥å建对象ï¼
new
å建对象å®ä¾ã为äºå®ä¹å¯¹è±¡ç±»åï¼ä¸ºå¯¹è±¡ç±»åå建ä¸ä¸ªå½æ°ä»¥å£°æç±»åçåç§°ã屿§åæ¹æ³ãä¾å¦ï¼ä½ æ³ä¸ºæ±½è½¦å建ä¸ä¸ªç±»åï¼å¹¶ä¸å°è¿ç±»å¯¹è±¡ç§°ä¸º car
ï¼å¹¶ä¸æ¥æå±æ§ make, modelï¼å yearï¼ä½ å¯ä»¥å建å¦ä¸ç彿°ï¼
function Car(make, model, year) {
this.make = make;
this.model = model;
this.year = year;
}
注æéè¿ä½¿ç¨ this å°ä¼ å ¥å½æ°çå¼èµç»å¯¹è±¡ç屿§ã
ç°å¨ä½ å¯ä»¥è±¡è¿æ ·å建ä¸ä¸ª mycar
对象ï¼
var mycar = new Car("Eagle", "Talon TSi", 1993);
该è¯å¥åå»ºäº mycar
å¹¶ä¸å°æå®çå¼èµç»å®ç屿§ãå è mycar.make
ç弿¯å符串 "Eagle"
ï¼mycar.year
ç弿¯æ´æ° 1993
ï¼ä¾æ¤ç±»æ¨ã
ä½ å¯ä»¥éè¿è°ç¨ new
åå»ºä»»ææ°éç car
对象ãä¾å¦ï¼
var kenscar = new Car("Nissan", "300ZX", 1992);
var vpgscar = new Car("Mazda", "Miata", 1990);
ä¸ä¸ªå¯¹è±¡ç屿§å¼å¯ä»¥æ¯å¦ä¸ä¸ªå¯¹è±¡ãä¾å¦ï¼åè®¾ä½ æå¦ä¸æ¹å¼å®ä¹äº person
对象ï¼
function Person(name, age, sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
ç¶åæå¦ä¸æ¹å¼å建äºä¸¤ä¸ª person
å®ä¾ï¼
var rand = new Person("Rand McKinnon", 33, "M");
var ken = new Person("Ken Jones", 39, "M");
é£ä¹ï¼ä½ å¯ä»¥éå car
çå®ä¹ä»¥å
å«ä¸ä¸ªæ¥æå®ç owner
屿§ï¼å¦ï¼
function Car(make, model, year, owner) {
this.make = make;
this.model = model;
this.year = year;
this.owner = owner;
}
ä½ å¯ä»¥æå¦ä¸æ¹å¼å建æ°å¯¹è±¡ï¼
var car1 = new Car("Eagle", "Talon TSi", 1993, rand);
var car2 = new Car("Nissan", "300ZX", 1992, ken);
注æå¨å建æ°å¯¹è±¡æ¶ï¼ä¸é¢çè¯å¥å° rand
å ken
ä½ä¸º owner
çåæ°å¼ï¼è䏿¯ä¼ å
¥å符串åé¢éææ´æ°å¼ãæ¥ä¸æ¥ä½ å¦ææ³æ¾åº car2 çæ¥æè
çå§åï¼ä½ å¯ä»¥è®¿é®å¦ä¸å±æ§ï¼
注æä½ æ»æ¯å¯ä»¥ä¸ºä¹åå®ä¹ç对象å¢å æ°ç屿§ãä¾å¦ï¼è¯å¥
为 car1
å¢å äº color
屿§ï¼å¹¶å°å
¶å¼è®¾ä¸º "black." ç¶èï¼è¿å¹¶ä¸å½±åå
¶ä»çå¯¹è±¡ãæ³è¦ä¸ºæä¸ªç±»åçææå¯¹è±¡å¢å æ°å±æ§ï¼ä½ å¿
é¡»å°å±æ§å å
¥å° car
对象类åçå®ä¹ä¸ã
对象ä¹å¯ä»¥ç¨ Object.create()
æ¹æ³å建ãè¯¥æ¹æ³é常æç¨ï¼å 为å®å
è®¸ä½ ä¸ºå建çå¯¹è±¡éæ©ä¸ä¸ªåå对象ï¼èä¸ç¨å®ä¹æé 彿°ã
// Animal properties and method encapsulation
var Animal = {
type: "Invertebrates", // 屿§é»è®¤å¼
displayType: function () {
// ç¨äºæ¾ç¤º type 屿§çæ¹æ³
console.log(this.type);
},
};
// å建ä¸ç§æ°çå¨ç©ââanimal1
var animal1 = Object.create(Animal);
animal1.displayType(); // Output:Invertebrates
// å建ä¸ç§æ°çå¨ç©ââFishes
var fish = Object.create(Animal);
fish.type = "Fishes";
fish.displayType(); // Output:Fishes
ç»§æ¿
ææç JavaScript 对象è³å°ç»§æ¿äºä¸ä¸ªå¯¹è±¡ã被继æ¿ç对象被称ä½ååï¼å¹¶ä¸ç»§æ¿ç屿§å¯éè¿æé 彿°ç prototype
对象æ¾å°ãæ¥çæ´å¤è¯¦ç» Inheritance and the prototype chain
å¨ JavaScript 1.0 ä¸ï¼ä½ å¯ä»¥éè¿åç§°æåºå·è®¿é®ä¸ä¸ªå±æ§ã使¯å¨ JavaScript 1.1 åä¹åçæ¬ä¸ï¼å¦æä½ æå使ç¨åç§°å®ä¹äºä¸ä¸ªå±æ§ï¼åä½ å¿ é¡»éè¿åç§°æ¥è®¿é®å®ï¼èå¦æä½ æå使ç¨åºå·æ¥å®ä¹ä¸ä¸ªå±æ§ï¼åä½ å¿ é¡»éè¿ç´¢å¼æ¥è®¿é®å®ã
è¿ä¸ªéå¶åçå¨ä½ éè¿æé 彿°å建ä¸ä¸ªå¯¹è±¡åå®ç屿§ï¼å°±è±¡æä»¬ä¹åéè¿ Car
对象类åæåç飿 ·ï¼å¹¶ä¸æ¾å¼å°å®ä¹äºåç¬ç屿§ï¼å¦ myCar.color = "red"
ï¼ä¹æ¶ãå¦æä½ æå使ç¨ç´¢å¼å®ä¹äºä¸ä¸ªå¯¹è±¡å±æ§ï¼ä¾å¦ myCar[5] = "25"
ï¼åä½ åªå¯è½éè¿ myCar[5]
å¼ç¨å®ã
è¿æ¡è§åçä¾å¤æ¯ä»ä¸ HTML 对åºç对象ï¼ä¾å¦ forms
æ°ç»ã对äºè¿äºæ°ç»çå
ç´ ï¼ä½ æ»æ¯æ¢å¯ä»¥éè¿å
¶åºå·ï¼ä¾æ®å
¶å¨ææ¡£ä¸åºç°ç顺åºï¼ï¼ä¹å¯ä»¥æç
§å
¶åç§°ï¼å¦ææçè¯ï¼è®¿é®å®ã举ä¾èè¨ï¼å¦æææ¡£ä¸ç第äºä¸ª <form>
æ ç¾æä¸ä¸ª NAME
屿§ä¸å¼ä¸º "myForm"
ï¼è®¿é®è¯¥ form
çæ¹å¼å¯ä»¥æ¯ document.forms[1]
ï¼document.forms["myForm"]
æ document.myForm
ã
为对象类åå®ä¹å±æ§
ä½ å¯ä»¥éè¿ prototype
屿§ä¸ºä¹åå®ä¹ç对象类åå¢å 屿§ãè¿ä¸ºè¯¥ç±»åçææå¯¹è±¡ï¼è䏿¯ä»
ä»
ä¸ä¸ªå¯¹è±¡å¢å äºä¸ä¸ªå±æ§ãä¸é¢ç代ç 为ææç±»å为 car
ç对象å¢å äº color
屿§ï¼ç¶å为对象 car1
ç color
屿§èµå¼ï¼
Car.prototype.color = null;
car1.color = "black";
åè§ JavaScript Reference ä¸ Function 对象ç prototype
屿§ ã
ä¸ä¸ªæ¹æ³ æ¯å ³èå°æä¸ªå¯¹è±¡ç彿°ï¼æè ç®åå°è¯´ï¼ä¸ä¸ªæ¹æ³æ¯ä¸ä¸ªå¼ä¸ºæä¸ªå½æ°çå¯¹è±¡å±æ§ãå®ä¹æ¹æ³å°±åå®ä¹æ®éç彿°ï¼é¤äºå®ä»¬å¿ 须被èµç»å¯¹è±¡çæä¸ªå±æ§ãæ¥ç method definitionsäºè§£æ´å¤è¯¦æ ä¾å¦ï¼
objectName.methodname = function_name;
var myObj = {
myMethod: function(params) {
// ...do something
}
// æè
è¿æ ·åä¹å¯ä»¥
myOtherMethod(params) {
// ...do something else
}
};
è¿é objectName
æ¯ä¸ä¸ªå·²ç»åå¨ç对象ï¼methodname
æ¯æ¹æ³çåç§°ï¼è function_name
æ¯å½æ°çåç§°ã
ä½ å¯ä»¥å¨å¯¹è±¡çä¸ä¸æä¸è±¡è¿æ ·è°ç¨æ¹æ³ï¼
object.methodname(params);
ä½ å¯ä»¥å¨å¯¹è±¡çæé 彿°ä¸å
嫿¹æ³å®ä¹æ¥ä¸ºæä¸ªå¯¹è±¡ç±»åå®ä¹æ¹æ³ãä¾å¦ï¼ä½ å¯ä»¥ä¸ºä¹åå®ä¹ç car
对象å®ä¹ä¸ä¸ªå½æ°æ ¼å¼åå¹¶æ¾ç¤ºå
¶å±æ§ï¼
function displayCar() {
var result = `A Beautiful ${this.year} ${this.make} ${this.model}`;
pretty_print(result);
}
è¿é pretty_print
æ¯ä¸ä¸ªæ¾ç¤ºæ¨ªçº¿åä¸ä¸ªå符串ç彿°ã注æä½¿ç¨ this æä»£æ¹æ³æå±ç对象ã
ä½ å¯ä»¥å¨å¯¹è±¡å®ä¹ä¸éè¿å¢å ä¸è¿°è¯å¥å°è¿ä¸ªå½æ°åæ Car
çæ¹æ³ï¼
this.displayCar = displayCar;
å æ¤ï¼Car
ç宿´å®ä¹çä¸å»å°æ¯ï¼
function Car(make, model, year, owner) {
this.make = make;
this.model = model;
this.year = year;
this.owner = owner;
this.displayCar = displayCar;
}
ç¶åä½ å¯ä»¥æå¦ä¸æ¹å¼ä¸ºæ¯ä¸ªå¯¹è±¡è°ç¨ displayCar
æ¹æ³ï¼
car1.displayCar();
car2.displayCar();
éè¿ this
å¼ç¨å¯¹è±¡
JavaScript æä¸ä¸ªç¹æ®çå
³é®å this
ï¼å®å¯ä»¥å¨æ¹æ³ä¸ä½¿ç¨ä»¥æä»£å½å对象ãä¾å¦ï¼åè®¾ä½ æä¸ä¸ªå为 validate
ç彿°ï¼å®æ ¹æ®ç»åºçæå¤§ä¸æå°å¼æ£æ¥æä¸ªå¯¹è±¡ç value
屿§ï¼
function validate(obj, lowval, hival) {
if (obj.value < lowval || obj.value > hival) {
alert("Invalid Value!");
}
}
ç¶åï¼ä½ å¯ä»¥å¨æ¯ä¸ªå
ç´ ç onchange
äºä»¶å¤çå¨ä¸è°ç¨ validate
ï¼å¹¶éè¿ this
ä¼ å
¥ç¸åºå
ç´ ï¼ä»£ç å¦ä¸ï¼
<input type="text" name="age" size="3" onChange="validate(this, 18, 99)" />
æ»ç说æ¥ï¼ this
å¨ä¸ä¸ªæ¹æ³ä¸æè°ç¨ç对象ã
å½ä¸ form
屿§ä¸èµ·ä½¿ç¨æ¶ï¼this
å¯ä»¥æä»£å½å对象çç¶çªä½ãå¨ä¸é¢çä¾åä¸ï¼çªä½ myForm
å
å«ä¸ä¸ª Text
对象åä¸ä¸ªæé®ï¼å½ç¨æ·ç¹å»æé®ï¼Text
对象çå¼è¢«è®¾ä¸ºçªä½çåç§°ãæé®ç onclick
äºä»¶å¤çå¨ä½¿ç¨ this.form
以æä»£å
¶ç¶çªä½ï¼å³ myForm
ã
<form name="myForm">
<p>
<label>Form name:<input type="text" name="text1" value="Beluga" /></label>
</p>
<p>
<input
name="button1"
type="button"
value="Show Form Name"
onclick="this.form.text1.value = this.form.name" />
</p>
</form>
å®ä¹ getter ä¸ setter
ä¸ä¸ª getter æ¯ä¸ä¸ªè·åæä¸ªç¹å®å±æ§çå¼çæ¹æ³ãä¸ä¸ª setter æ¯ä¸ä¸ªè®¾å®æä¸ªå±æ§çå¼çæ¹æ³ãä½ å¯ä»¥ä¸ºé¢å®ä¹çæç¨æ·å®ä¹ç对象å®ä¹ getter å setter ä»¥æ¯ææ°å¢ç屿§ãå®ä¹ getter å setter çè¯æ³éç¨å¯¹è±¡åé¢éè¯æ³ã
ä¸é¢ä¾åæè¿°äº getter å setter æ¯å¦ä½ä¸ºç¨æ·å®ä¹ç对象 o
å·¥ä½çã
var o = {
a: 7,
get b() {
return this.a + 1;
},
set c(x) {
this.a = x / 2;
},
};
console.log(o.a); // 7
console.log(o.b); // 8
o.c = 50;
console.log(o.a); // 25
o
对象ç屿§å¦ä¸ï¼
o.a
â æ°åo.b
â è¿å o.a
+ 1 ç gettero.c
â ç± o.c çå¼æè®¾ç½® o.a å¼ç
setter请注æå¨ä¸ä¸ªå¯¹è±¡åé¢éè¯æ³ä¸å®ä¹ getter å setter 使ç¨"[gs]et property()"çæ¹å¼ï¼ç¸æ¯è¾äº__define[GS]etter__) æ¶ï¼å¹¶ä¸æ¯è·åå设置æä¸ªå±æ§èªèº«ï¼å®¹æè®©äººè¯¯ä»¥ä¸ºæ¯"[gs]et propertyName(){ }"è¿æ ·é误çä½¿ç¨æ¹æ³ãå®ä¹ä¸ä¸ª getter æ setter 彿°ä½¿ç¨è¯æ³"[gs]et property()"ï¼å®ä¹ä¸ä¸ªå·²ç»å£°æç彿°ä½ä¸ºç getter å setter æ¹æ³ï¼ä½¿ç¨Object.defineProperty
(æè
Object.prototype.__defineGetter__
æ§è¯æ³åé)
ä¸é¢è¿ä¸ªä¾åå±ç¤ºä½¿ç¨ getter å setter æ¹æ³æ©å± Date
ååï¼ä¸ºé¢å®ä¹å¥½ç Date 类添å ä¸ä¸ª year ç屿§ãå®ä¹å±æ§ year ç getter å setter æ¹æ³ç¨å°äº Date ç±»ä¸å·²åå¨ç getFullYear å setFullYear æ¹æ³ã
å®ä¹å±æ§ year ç getter å setterï¼
var d = Date.prototype;
Object.defineProperty(d, "year", {
get: function () {
return this.getFullYear();
},
set: function (y) {
this.setFullYear(y);
},
});
éè¿ä¸ä¸ª Date å¯¹è±¡ä½¿ç¨ getter å setter:
var now = new Date();
console.log(now.year); // 2000
now.year = 2001; // 987617605170
console.log(now);
// Wed Apr 18 11:13:25 GMT-0700 (Pacific Daylight Time) 2001
ååä¸ï¼getter å setter æ¢å¯ä»¥ï¼
å½ä½¿ç¨ 使ç¨å¯¹è±¡åå§åå¨ çæ¹å¼å®ä¹ getter å setter æ¶ï¼åªéè¦å¨ getter æ¹æ³åå getï¼å¨ setter æ¹æ³åå setï¼å½ç¶ï¼getter æ¹æ³å¿ é¡»æ¯æ åæ°çï¼setter æ¹æ³åªæ¥åä¸ä¸ªåæ° (设置为æ°å¼ï¼ï¼ä¾å¦ï¼
var o = {
a: 7,
get b() {
return this.a + 1;
},
set c(x) {
this.a = x / 2;
},
};
ä½¿ç¨ Object.defineProperties çæ¹æ³ï¼åæ ·ä¹å¯ä»¥å¯¹ä¸ä¸ªå·²å建ç对象å¨ä»»ä½æ¶åä¸ºå ¶æ·»å getter æ setter æ¹æ³ãè¿ä¸ªæ¹æ³ç第ä¸ä¸ªåæ°æ¯ä½ æ³å®ä¹ getter æ setter æ¹æ³ç对象ï¼ç¬¬äºä¸ªåæ°æ¯ä¸ä¸ªå¯¹è±¡ï¼è¿ä¸ªå¯¹è±¡ç屿§åç¨ä½ getter æ setter çååï¼å±æ§å对åºç屿§å¼ç¨ä½å®ä¹ getter æ setter æ¹æ³ç彿°ï¼ä¸é¢æ¯ä¸ä¸ªä¾åå®ä¹äºååé¢ä¾å䏿 ·ç getter å setter æ¹æ³ï¼
var o = { a: 0 };
Object.defineProperties(o, {
b: {
get: function () {
return this.a + 1;
},
},
c: {
set: function (x) {
this.a = x / 2;
},
},
});
o.c = 10; // Runs the setter, which assigns 10 / 2 (5) to the 'a' property
console.log(o.b); // Runs the getter, which yields a + 1 or 6
è¿ä¸¤ç§å®ä¹æ¹å¼çéæ©åå³äºä½ çç¼ç¨é£æ ¼åæå¤´çå·¥ä½éãå½ä½ å®ä¹ä¸ä¸ªåååå¤è¿è¡åå§åæ¶ï¼å¯ä»¥éæ©ç¬¬ä¸ç§æ¹å¼ï¼è¿ç§æ¹å¼æ´ç®æ´åèªç¶ã使¯ï¼å½ä½ éè¦æ·»å getter å setter æ¹æ³ââå 为并没æç¼åååæè ç¹å®ç对象ââ使ç¨ç¬¬äºç§æ¹å¼æ´å¥½ã第äºç§æ¹å¼å¯è½æ´è½è¡¨ç° JavaScript è¯æ³çå¨æç¹æ§ââä½ä¹ä¼ä½¿ä»£ç åå¾é¾ä»¥é 读åçè§£ã
å é¤å±æ§ä½ å¯ä»¥ç¨ delete
æä½ç¬¦å é¤ä¸ä¸ªä¸æ¯ç»§æ¿èæ¥ç屿§ãä¸é¢çä¾å说æå¦ä½å é¤ä¸ä¸ªå±æ§ï¼
//Creates a new object, myobj, with two properties, a and b.
var myobj = new Object();
myobj.a = 5;
myobj.b = 12;
//Removes the a property, leaving myobj with only the b property.
delete myobj.a;
妿ä¸ä¸ªå
¨å±åé䏿¯ç¨ var
å
³é®å声æçè¯ï¼ä½ ä¹å¯ä»¥ç¨ delete
å é¤å®ï¼
å¨ JavaScript ä¸ objects æ¯ä¸ç§å¼ç¨ç±»åã两个ç¬ç«å£°æç对象永è¿ä¹ä¸ä¼ç¸çï¼å³ä½¿ä»ä»¬æç¸åç屿§ï¼åªæå¨æ¯è¾ä¸ä¸ªå¯¹è±¡åè¿ä¸ªå¯¹è±¡çå¼ç¨æ¶ï¼æä¼è¿å true.
// 两个åéï¼ä¸¤ä¸ªå
·æåæ ·ç屿§ãä½ä¸ç¸åç对象
var fruit = { name: "apple" };
var fruitbear = { name: "apple" };
fruit == fruitbear; // return false
fruit === fruitbear; // return false
夿³¨ï¼ "===" è¿ç®ç¬¦ç¨æ¥æ£æ¥æ°å¼æ¯å¦ç¸çï¼1 === "1"è¿å falseï¼è 1 == "1" è¿å true
// 两个åéï¼åä¸ä¸ªå¯¹è±¡
var fruit = { name: "apple" };
var fruitbear = fruit; // å° fruit ç对象å¼ç¨ (reference) èµå¼ç» fruitbear
// ä¹ç§°ä¸ºå° fruitbearâæåâfruit 对象
// fruit ä¸ fruitbear 齿ååæ ·ç对象
fruit == fruitbear; // return true
fruit === fruitbear; // return true
äºè§£æ´å¤å ³äºæ¯è¾è¿ç®ç¬¦çç¨æ³ï¼æ¥çç¸çè¿ç®ç¬¦ã
åè§RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4