1.類
當我們對一個東西進行分類的時候靖避,往往會對一個東西按照所有共同特點進行分類
所以類就是具有共同特征對象的一個集合
當我們在進行分類的時候會先找到這些對象他們所具有的共同特征進行分類的這個過程叫抽象
在面向?qū)ο笾杏幸粋€概念
對象抽象成了類
類實例化成對象
2.在其他語言中java c php等在類這個概念中都有一個關鍵字class
但是在原生js中沒有專門聲明類的關鍵字,所有只能通過構(gòu)造函數(shù)來聲明一個類
構(gòu)造函數(shù)
我們可以通過構(gòu)造函數(shù)來創(chuàng)建對象
通過構(gòu)造函數(shù)來創(chuàng)建對象又叫實例化對象
在使用構(gòu)造函數(shù)來創(chuàng)建對象的時候赡鲜,不能單純的調(diào)用這個函數(shù)叙赚,必須使用一個new這個關鍵字來調(diào)用函數(shù)齿税,構(gòu)造函數(shù)通過new關鍵字來實例化對象
構(gòu)造函數(shù)所實例化出來的對象天生就具備構(gòu)造函數(shù)里面的屬性和方法
在構(gòu)造函數(shù)中使用自身的屬性必須通過this來寫
例如定義一個男人類
function Man(n,a){
this.name_=n;
this.age=a;
this.say=function(w){
console.log('你好俗批,我是’+w)
}
}
var a=new Man('小馬',7);
console.log(a);
a.name_='小剛';
console.log(a);
//對象調(diào)用自身的方法
a.say('小明');
原型對象
原型對象:所有的構(gòu)造函數(shù)中都有一個對象屬性叫原型對象溜徙,這個構(gòu)造函數(shù)所實例化出來的所有對象都是按照這個原型對象所實例化出來的換句話來說對象的實例化其實就是拷貝構(gòu)造函數(shù)中的原型對象
原型對象也叫 prototype
例如:
function Dog(){
this.name_ = n;
this.age = a;
this.say = function () {
console.log('汪汪汪');
}
}
var d=new Dog('大黃','2');
consoloe.log(d)
Dog.prototype='金毛';
Dog.prototype.eat=function(){
console.log('吃肉')
}
function Cat(c) {
Cat.prototype.name_ = '小貓'
Cat.prototype.age = 2;
Cat.prototype.say = function () {
console.log('喵喵喵');
}
}
var c = new Cat('black');
console.log(c.color);
一般情況下往原型對象里面添加的屬性和方法都是一些不在需要修改的屬性
一般情況下在使用某個屬性時會先在構(gòu)造函數(shù)里面的this屬性里面找糠排,如果沒有找到才會去原型對象里面找