万物皆对象
我们不缺‘对象’缺对象
知识点1
三种方法创建对象
1.第一种创建对象 New
var obj = new Object();
obj.name = 'mingze';
obj.age = 20;
obj.sex = 0;
obj.mingze = function(){
return this.age
}
obj.mingze() // 20
2.1.第二种创建对象 通过隐式
var obj = {};
obj.name = 'MZ';
obj.age = 20
obj.Fn = function(){
return this.name
}
obj.Fn() //MZ
2.2 创建对象 简单字面量
var obj = {
name:'mingze',
like:'computed',
Fn:function(){
return this.like
}
};
obj.Fn() //computed
注意:最后一个不要加逗号
如果key有空格和特殊符号 保留字 那么value 要加引号。!!!!
知识点2
函数表达式 和 函数声明的区别
function add(){} // 函数声明
var addl = function(){} // 函数表达式
--函数声明预加载先 可以在函数前调用函数
--函数表达式 预加载慢,不能在函数前面调用函数
---------------------------------
构造函数
function Mingze(age,name){
this.name = nam;
this.age = age;
this.todo = function(){
console.log(this.name)
}
}
var a = new Mingze(20,'mingze')
a.todo()
注意:首字母大写
所有的引用类型都有构造函数
var a = {} 其实是一个 var a = new Object()的语法糖
var a = [] 其实是一个 var a = new Array()的语法糖
构造函数中的this 指的是的实例化的那个对象 不是指的Person
ar aa = new Person('shaozhu',22); //aa.age
var bb = new Person('cole',23); //bb.age
优点:同一个方法 可以实例化多个然后去使用 构造函数可以通用!
返回一个对象
function person(name,age){
var obj = new Object();
obj.name = name;
obj.age = age;
return obj;//返回对象
}
var a1 = person('qqq',23);//这种方法就不用new 了 里面new了
a1.name
'qqq'
上面这个模式称为 工厂模式
普通模式 就是日常的函数
以后写插件 公用的 构造器用的特别的多!!
构造函数都要通过new 来调用的
总结:构造函数与普通函数的区别
1.this 指向
--构造函数的this 指向创建对象的实例上 !!!
--普通函数 指向调用者
2.调用方式
NEW new
3.命名方式
构造函数首字母大写!!
----------------------------------------------
通过面向对象来写功能
注意点 :jq 选择器 带上父元素 权重大 不会出问题 (别人可能也写了这个类 )
嵌套字面量 好东西!!