JS高级
Posted lyczzc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS高级相关的知识,希望对你有一定的参考价值。
##面向对象的特征
一.封装(隐藏实现细节的过程)
好处:重用 隐藏细节
访问器:get(获取值)
修改器:set(设值)
例:Object.defineProperty(Student.prototype,"name"){
set:function(name){
_name=name;
},
get:function(){
return _name;
}
});
二.this:普通函数调用得到的是全局对象,在对象中,指向的是当前对象
**改变this指向**
1.在调用函数后加bind
例:function func(){
console.log("func:",this);
};
func.bind({name(this指向的对象):‘change this‘})()
2.call/apply
func.call({name:‘change this‘},100,200); 采用参数列表
func.apply({name:‘change this‘},[100,200]); 通过数组传参
3.箭头函数
例:let obj={
show:function(){
console.log("show",this);
(()=>{
console.log("inner show:",this);
})()
}
}
三.继承(通过子类沿用父类的属性、方法来达到重用性;子类可以有自己的属性、方法达到扩展型)
1.继承只有单根继承
2.有三种方法继承:
对象冒充发(属性传递属性)
原型链(继承方法)
混合方式:采用前两种方式的混合方式
3.prototype只能通过构造函数访问,可以改变原型
_proto_属性可以通过对象访问属性,但不能改变属性
以上是关于JS高级的主要内容,如果未能解决你的问题,请参考以下文章