1.面向对象的概念
2.面向对象的三大特点
3.面向对象的组成
重点难点:this该方法的指向
4. js中常见对象
5.怎么写对象(创建方法)
1 使用Object
// 1.Object
var mzb =new Object();
mzb.name='穆本';
mzb.nick='本本';
mzb.skill=function(){
console.log('lallalala');
}
2 字面量创建 / json
// 2.json创建
var wwx={
name:'王文轩',
age:5,
skill:function(){
console.log('lallalalal');
}
}
3 工厂方式
// 3.工厂模式
function createPerson(name,qq){
var obj=new Object();
}
4 构造函数*(推荐)
// 4.构造函数
function Book(name,author,price,type){
this.name=name;
this.author=author;
this.price=price;
this.type=type;
}
Book();
var shz=new Book("水浒传","施耐庵","56","小说");
5.原型(重要)
// 建议: 方法及公用属性写在原型中
// 原型需要用构造函数名调用
// 原型的本质是个对象
// 原型链
function Dog(type, name, age) {
this.type = type;
this.name = name;
this.age = age;
}
Dog.prototype.skill = function() {
console.log('拆家');
}
function Cat(kindle, nick) {
this.tykindlepe = kindle;
this.nick = nick;
}
Cat.prototype = new Dog('金毛', '疙瘩', 2);
var cat = new Cat('橘猫', '啊桔');
cat.skill();
6.三大特性
反转字符串
function reverseString(string) {
return string.split(‘’).reverse().join(‘’)
}
改良版:(更高级)
String.prototype.reverseString = function() {
return this.split(‘’).reverse().join(‘’);
}
继承
function Animal(nick, age) {
this.nick = nick;
this.age = age;
}
Animal.prototype.skill = function() {
console.log('觅食')
}
function Dog(nick, age, type) {
// this.nick = nick;
// this.age = age;
Animal.call(this, nick, age);
Animal.apply(this, [nick, age]);
this.type = type;
}
// 我们使用call和apply方式实现构造函数的继承
// call与apply作用:改变this指向
// 浅拷贝,不能这么写,容易对父级的原型进行修改
// Dog.prototype = Animal.prototype;
// 推荐使用就for in
for (var x in Animal.prototype) {
Dog.prototype[x] = Animal.prototype[x]
}
Dog.prototype.jump = function() {
console.log("jump");
}
var d = new Dog('dd', 6, '柯基');
d.skill();