Rumah > hujung hadapan web > tutorial js > Penjelasan terperinci tentang kemahiran JavaScript constructor_javascript

Penjelasan terperinci tentang kemahiran JavaScript constructor_javascript

WBOY
Lepaskan: 2016-05-16 15:23:11
asal
1716 orang telah melayarinya

Pembina adalah untuk memulakan objek contoh, dan atribut prototaip objek adalah untuk mewarisi objek contoh.

Nota Pembina:

1. Huruf pertama fungsi lalai ditulis dengan huruf besar

2. Pembina tidak mengembalikan apa-apa. Operator baharu secara automatik mencipta jenis yang diberikan dan mengembalikannya Apabila pembina dipanggil, baru secara automatik mencipta objek ini, dan jenisnya ialah jenis pembina.

3. Anda juga boleh memanggil pulangan secara eksplisit dalam pembina Jika nilai yang dikembalikan ialah objek, ia akan dikembalikan dan bukannya contoh objek yang baru dibuat. Jika nilai yang dikembalikan adalah jenis primitif, ia diabaikan dan contoh yang baru dibuat dikembalikan. 

 function Person( name){
        this.name =name;
      }
       var p1=new Person('John');
Salin selepas log masuk

bersamaan dengan:

   function person(name ){
        Object obj =new Object();
        obj.name =name;
         return obj;
      }
       var p1= person("John");
Salin selepas log masuk

4. Kerana pembina juga merupakan fungsi, ia boleh dipanggil secara langsung, tetapi nilai pulangannya tidak ditentukan Pada masa ini, objek ini dalam pembina adalah sama dengan objek global ini. this.name sebenarnya mencipta nama pembolehubah global. Dalam mod ketat, ralat berlaku apabila anda memanggil pembina Orang melalui baharu.

5. Anda juga boleh menggunakan kaedah Object.defineProperty() dalam pembina untuk membantu kami memulakan:

  function Person( name){
        Object.defineProperty(this, "name"{
          get :function(){
             return name;
          },
           set:function (newName){
            name =newName;
          },
          enumerable :true, //可枚举,默认为false
           configurable:true //可配置
         });
      }  
       var p1=new Person('John');
Salin selepas log masuk

6. Gunakan objek prototaip dalam pembina

 //比直接在构造函数中写的效率要高的多
       Person.prototype.sayName= function(){
         console.log(this.name);
      };
Salin selepas log masuk

Tetapi jika terdapat banyak kaedah, kebanyakan orang akan menggunakan kaedah yang lebih mudah: secara langsung menggantikan objek prototaip dengan objek literal, seperti berikut:

 Person.prototype ={
        sayName :function(){
           console.log(this.name);
        },
        toString :function(){
           return "[Person "+ this.name+"]" ;
        }
      };
Salin selepas log masuk
Kaedah ini sangat popular kerana anda tidak perlu menaip Person.prototype beberapa kali, tetapi terdapat kesan sampingan yang perlu anda perhatikan:

Menulis semula objek prototaip menggunakan bentuk literal mengubah sifat pembina, jadi ia menunjuk kepada Objek dan bukannya Orang. Ini kerana objek prototaip mempunyai sifat pembina, yang tidak mempunyai contoh objek lain. Apabila fungsi dicipta, sifat prototaipnya juga dicipta, dan sifat pembina objek prototaip menunjuk ke fungsi. Apabila objek prototaip ditulis semula menggunakan bentuk literal objek, sifat pembinanya akan ditetapkan kepada Objek objek generik Untuk mengelakkan ini, anda perlu menetapkan semula pembina secara manual apabila menulis semula objek prototaip, seperti berikut:


 Person.prototype ={
        constructor :Person,
        
        sayName :function(){
           console.log(this.name);
        },        
        toString :function(){
           return "[Person "+ this.name+"]" ;
        }
      };
Salin selepas log masuk
Uji sekali lagi:

p1.constructor===Orang


benar


p1.constructor===Objek


palsu


p1 contoh Orang


benar

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan