在javascript里面什么是面向对象
万物皆是对象
字面量 -- 字面上显示的东西叫做字面量
包装类 -- 没有new的函数声明就是包装类
什么是对象
1.只要是对象就可以有自己的私有属性。
2. 只要是new 出来的都是对象。
3. 不同对象肯定不会相等的。
4. 对象都会有引用机制 。
* 如果不想引用就重新赋值
生命周期:
面向对象 - 最有用的就是私有属性
面向对象的三大特点:
1、封装 2、继承 3、多态
prototype 原型
可以向对象添加属性和方法
var str="66666";
var str2=new String("1215");
String.prototype.my=99;
console.log(str.my); //添加属性
String.prototype.your=function(){
alert("添加了一个方法")
}
str.your();
this指向
1/在普通函数下 this指向的是 window
2/ 有事件源指向事件源本身
3/ 在定时器下 除es6 this 指向window。
4/ 对象下 this 指向的是自己本身。
call和apply的区别和相同点
相同点:转换this指向
区别: call() 除去第一个参数之外,之后的参数是以普通传参的方式传参
apply() 除去第一个参数之外,之后的参数是以数组的方式传参
function leo1(name,age){
this.name=name;
this.age=age;
}
function leo2(name,age){
leo1.call(this,name,age)
//leo1.apply(this,[name,age])
}
var Leo2=new leo2("小明",18);
console.log(Leo2)
继承 - 子级可以用父级的属性和方法,但是父级不能用子级的
function A(){
this.name = 'abc';
}
A.prototype.showName = function(){
alert(this.name)
}
function B(){
//this指向是new出来的B B.name = 'abc';
A.call(this);
}
B.prototype = A.prototype;
B.prototype.fn = function(){
alert('123')
}
var objB = new B();
var objA = new A();
// alert(B.name)
objB.showName()
objA.fn()
jquery 原生封装方法:
function jquery(){
};
jquery.prototype.addClass = function(){
}
function $(obj){
return new jquery(obj);
}
$("a")