javascriptプロトタイプ属性とインスタンス属性(自己属性)

8798 ワード

原型の属性、プロトタイプの属性、実例の属性、自身の属性について話します.まずこの四つの関係を理解します.いくつかの資料を調べてみましたが、プロトタイプの属性はプロトタイプと呼ばれています.呼び方だけが違う.以下は他の人が書いたコードを引用して説明します.
1:例示的な属性とは、構造関数法で定義された属性であり、属性と方法は異なる参照アドレスである例えば、
function CreateObject(name,age){
    this.name=name;  //    
    this.age=age;
    this.run=function(){   //    
        return this.name + this.age;
    }

    //                   .     
    //this.run = run;
}


var box1 = new CreateObject('ZHS',100);
var box2 = new CreateObject('ZHS',100);


console.log(box1.name == box2.name);//true
console.log(box1.run() == box2.run());//true
console.log(box1.run == box2.run); //false         
どのようにbox 1とbox 2 runの方法の住所を一致させますか?偽名の使用例:
//    
var o = new Object();
Box.call(o,'xlp',200);
console.log(o.run());
2.プロトタイプの属性とは、コンストラクションで定義されていない属性を指し、属性と方法は同じ参照住所、例えば
function CreateObject(){}
CreateObject.prototype.name='ZHS';
CreateObject.prototype.age='100';
CreateObject.prototype.run=function(){
    return this.name + this.age;
}

var CreateObject1 = new CreateObject();
var CreateObject2 = new CreateObject();
console.log(CreateObject1.run == CreateObject2.run); //true
console.log(CreateObject1.prototype);//        ,    
console.log(CreateObject1.__proto__);//          prototype    
console.log(CreateObject1.constructor);//    
     CreateObject1        ?  
CreateObject1.name='XLP';
console.log(CreateObject1.name);//   XLP //    
    delete           
delete CreateObject1.name;  //        
delete CreateObject.prototype.name ;//        
prototypeのプロパティをさらに説明するために、ここでコードを追加します.

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>title>
head>
<body>
<script type="text/javascript">
    function employee(name,age,address){
        this.name=name;
        this.age=age;
        this.address=address;

        this.hello=function(){
            return "  :"+this.name+";"+"  :"+this.age+";"+"  :"+this.address;
        }
    }

    var employ1=new employee("  ",23,"    ");
    employee.prototype.country="  ";
    document.write(employ1.country);
    document.write("
"
); document.write(employ1.hello());
script> body> html>
ouput:
中国の名前:小欧;年齢:23住所:浙江衢州
インスタンス化されたオブジェクトは、プロトタイプオブジェクトのすべての属性と方法を共有することができます.
例は以下の通りです

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>title>
head>
<body>
<script type="text/javascript">
    function createPerson(name,age,address){
        this.name=name;
        this.age=age;
        this.address=address;
        this.sayname=function (){
            return this.sex;
        }
    }

    createPerson.prototype.sex=" ";

    var Obj=new createPerson("xiaohong",25,"  ");
    document.write(Obj.sex);
    document.write("
"
); document.write(Obj.sayname());
script> body> html>
out put:女性
上記の例を通して、私は実例的な方法でも下記に定義されたプロトタイプ属性の値にアクセスすることができます.
資料を参照:
http://cnodejs.org/topic/518a3adc63e9f8a5420df3b4