1.对"封装"的理解
封装就是提高单一功能或模块的独立性和复用性。
2.js中new一个对象时都发生了什么?
//定义一个构造函数
function Bird(name,age){
this.name=name,
this.age=age
this.say=function(){
console.log('I am a bird')
}
}
//构造函数的属性和方法定义
Bird.prototype.color="red"
Bird.prototype.sayHi=function(){
console.log('hi')
}
//实例化
var a=new Bird('ying wu',2)
console.log(a.name) //当前属性
console.log(a.sayHi()) //原型方法
console.log(a.say()) //当前方法
// a会自动包含一个constructor属性指向他们的构造函数
a.constructor==Bird()
//验证对象与实例对象之间的关系
console.log(a instanceof Bird) //true
每一个构造函数都有一个prototype属性,指向另一个对象。这个对象所有的属性都会被构造函数的实例继承。这样我们把那些不变的属性和方法,直接定义在prototype对象上。
3.isPrototypeOf() 和hasOwnProperty() in
isPrototypeOf() 这个方法用来判断某个prototype对象和某个实例之间的关系
hasOwnProperty()判断是否是本地属性
Bird.prototype.isPrototypeOf(a) //true
in运算符来判断某个实例是否包含某个属性,不管是不是本地;还可以遍历
console.log(" name" in a) //true
for(var prop in a ){
console.log(prop)
}
实例化构造函数,获取对象。通过new关键字实例化的对象a,具备了构造函数Bird中this的属性:name、age,也具备了构造函数Bird的原型prototype的属性color和方法sayBye。
什么是构造函数。就是一个普通函数但是内部使用了this变量。对构造函数使用new运算符,就能生成实例,并且this变量会绑定在实例对象上。
精华在这里:比如,我有一只鹦鹉叫靓仔。鹦鹉是鸟类(构造函数)的一个实例,鹦鹉具备了鸟的属性羽毛、行为飞翔,然后鸟还可能有自己的名字靓仔和年龄1.5岁。姓名和年龄是本地属性(hasOwnProperty()),飞翔是他的原型方法。
网友评论