问题1:OOP 指什么?有哪些特性
1)面向对象程序设计
2)封装 继承 多态
封装:构造一个的对象,给这个对象 添加属性和方法,完成这个对象的过程就叫封装
继承:子类继承父类 子类拥有父类的方法和属性 子对象可以使用父类的方法 javascript里面有五种继承方法
第一种, 使用apply call 构造函数绑定方法。第二种, prototype模式 cat.prototype=new Animate。第三种,直接继承prototype ,cat.prototype=Animate.prototype。第四种,利用空对象作为中介继承prototype。第五种,拷贝继承。
多态:一个引用类型在不同情况下的多种形态,传入的对象不同 同样的方法 最终的结果不同
问题2: 如何通过构造函数的方式创建一个拥有属性和方法的对象?
function person(name,age,fruit){
this.name=name;
this.age=age;
this.fruit=fruit;
this.eat=function(){
console.log(this.name+'喜欢吃'+this.fruit)
}
}
//new实例化
var me=new person('pearl',18,'橘子')
console.log(me.name) //pearl
me.eat() //pearl喜欢吃橘子
问题3: prototype 是什么?有什么特性
1)原型链对象
2)函数默认有一个prototype属性 实例化这个函数时prototype会转化成proto 默认constroctur的值保存着原函数的地址 this指向当前实例化的这个对象 当实例化的对象要调用某个方法时 自身实例化对象上没有则到原型链上查找。
问题4:画出如下代码的原型图
function People (name){
this.name = name;
this.sayName = function(){
console.log('my name is:' + this.name);
}
}
People.prototype.walk = function(){
console.log(this.name + ' is walking');
}
var p1 = new People('kyle');
var p2 = new People('vanko');
问题5:创建一个 Car 对象,拥有属性name、color、status;拥有方法run,stop,getStatus
function Cat(name,color,status){
this.name=name;
this.color=color;
this.status=status;
}
Cat.prototype.run=function(){
console.log("我是一只会跳的"+this.name+"猫")
}
Cat.prototype.stop=function(){
console.log("我可以自己停下来")
}
Cat.prototype.getStatus=function(){
console.log("我在"+this.status)
}
var cat1=new Cat("呀呀","白色","睡觉")
cat1.name //呀呀
cat1.color //白色
cat1.run() //我是一只会跳的呀呀猫
cat1.stop() //我可以自己停下来
cat1.getStatus() //我在睡觉
问题6:创建一个 GoTop 对象,当 new 一个 GotTop 对象则会在页面上创建一个回到顶部的元素,点击页面滚动到顶部。拥有以下属性和方法
//1. `ct`属性,GoTop 对应的 DOM 元素的容器
//2. `target`属性, GoTop 对应的 DOM 元素
//3. `bindEvent` 方法, 用于绑定事件
//4 `createNode` 方法, 用于在容器内创建节点
function GoTop(obj){
this.ct=obj.ct
this.text=obj.text
this.createNode()
this.bindEvent()
}
GoTop.prototype.bindEvent=function(){
this.target.on('click',function(){
$(window).scrollTop(0)
})
}
GoTop.prototype.createNode=function(){
this.target=$('<div class="gotop">'+this.text+'</div>')
this.ct.append(this.target)
}
var obj1={
ct:$('body'),
text:'go to top'
}
var gotop=new GoTop(obj1)