面向对象相对于面向过程是另外一种方法。何为对象?万物皆对象!编写的程序来源生活中,所以,编写的程序可以反映生活。对象有特点/属性/数据,和行为/动作/功能。面对对象编程的步骤:1.找出对象;2.实现对象
JavaScript规定,一个函数可以用new关键字来调用。那么此时将按顺序发生四件事情:
1)隐秘的创建一个新的空对象
2)将这个函数里面的this绑定到刚才创建隐秘新对象上
3)执行函数体里面的语句
4)返回这个新的对象
这个步骤是先创建一个函数,里面的属性用this打头,再定义一个新的函数,一定要在原函数前面加上加上“new”。
在JavaScript中,任何一个函数,都有一个prototype属性,指向一个对象。每个构造函数中都存在一个隐藏对象,名字是prototype,prototype在英文当中的意思是原型的意思。执行流程为:1.在构造函数中找,若找到了就立即结束,若找不到就再原型对象中找,找到结束,找不到就报错。prototype一定是函数的属性!当这个函数是一个构造函数的时候,那么它new出来的对象,将以它的原型那个对象为new出来的实例的原型对象。
继承的意思是给原对象增加一些新的属性和方法,可以new出一个新的对象。这个新的对象会拥有上元对象的属性和方法,还可以增加一些新的方法和属性,避免了代码的重复书写。
例如:
function People(a,b,c){
this.name = a;
this.age = b;
this.height = c
}
People.prototype.eat = function(){
console.log("牛排太好吃啦")
}
People.prototype.drink = function(){
console.log("酸梅汤太好喝啦!")
}
function Boy(a,b,c,d){
this.name = a;
this.age = b;
this.height = c;
this.sex = d
}
Boy.prototype = new People();
Boy.prototype.play = function(){
console.log("打游戏,玩密室逃脱!")
}
Boy.prototype.run = function(){
console.log("跑跑跑!")
}
var zhuangyuan = new Boy("状元",20,176,"男")
zhuangyuan.play();
zhuangyuan.run();
zhuangyuan.eat();
zhuangyuan.drink();
console.log(zhuangyuan.name);
console.log(zhuangyuan.age);
console.log(zhuangyuan.height);
console.log(zhuangyuan.sex)