1. オブジェクトを作成します
var person = 新しいオブジェクト ();
人.年齢 = 30;
人.sayName = 関数 () >alert(this.name);
person.sayName();
欠点: オブジェクトを識別できない
コードをコピー
コードは次のとおりです。 function createperson(name,age ,job) { var o = new Object();
o.age = 年齢;
o.sayName = 関数() {
alert (this.name);
return o;
var person1 ("A Liang",30,"Teacher") ;
var person2 = createperson("Junjun",24,"失業者");
person1.sayName(); //"A Liang"
person2.sayName(); Junjun"
3. コンストラクター パターン
欠点: カプセル化の欠如
コードをコピー
コードは次のとおりです。
var person1 = 新しい人("A 梁",30 ,"先生");
var person2 = new Person("Junjun",24,"失業者");
person1.sayName(); ;
4. プロトタイプ モード
欠点: すべてのプロパティはインスタンスによって共有されます
コードをコピーします>
コードは次のとおりです。
function Person() {
}
person.prototype.name = "ALiang"; .age = 30;
人物.prototype.job = "教師";
alert(this.name); 🎜>hasOwnProperty() メソッドは特定のプロパティを検出します。インスタンス属性である場合は true を返します。
コードをコピー
コードは次のとおりです。
function hasPrototypeProperty(object,name) {
return !object.hasOwnProperty(name) && (name in object)
}
//使用法
var person = new Person();
alert(hasPrototypeProperty(person,"name")); //true
person.name = "Grey"; prototype
alert(hasPrototypeProperty(person,"name")); //false
isPrototypeOf () メソッドは、指定されたオブジェクト object1 が別のオブジェクトのプロトタイプ チェーンに存在するかどうかを判断するために使用されます。 object2 である場合は true を返し、そうでない場合は false を返します。
形式は次のとおりです:
コードをコピー
コードは次のとおりです:
//リテラル オーバーライド プロトタイプ オブジェクト
function Person(){
}
person.prototype = {
コンストラクター : 人物、
名前 : "ALiang"、
年齢 : 30、
仕事: "Teacher",
sayName : function() {
alert(this.name);
}
コードをコピーします
コードは次のとおりです:
関数 人(名前,年齢,仕事) {
この.名前 = 名前;
この.年齢 = 年齢;
この.仕事 = 職業; ["xuyun","wuxueming"];
}
person.prototype = {
constructor : person,
sayName : function() {
alert(this.name); >}
};
var person1 = 新しい人("ALiang",30,"教師");
var person2 = 新しい人("ZuNan",26,"教師");
person1.friends.push("JunJun");
alert(person1.friends) //"xuyun","wuxueming","JunJun"
alert(person2.friends); xuyun","wuxueming"
6. 動的プロトタイプ モード
function person(name,age,job) {
this.name = name;
this.job = job; 🎜 >
if (typeof this.sayName != "function"){ //ここでのsayNameは、初期化後に存在する任意のメソッドまたはプロパティにすることができます
person.prototype.sayName = function() { //使用できませんリテラル 定量形式
alert(this.name);
}
7. 安全なコンストラクター パターン