一、创建对象常用的几种方式
1.字面量方式
var obj = {
name:"kitty", //属性
say:function(){ //方法
console.log("my name is"+obj.name);
}
}
obj.say(); //my name is kitty
我们传统方式是这样写的:
var name= "Tom";
function eat(){
console.log("汉堡");
}
var name = "Mary";
function eat(){
console.log("面条");
}
console.log(name); //只会输出Mary
eat(); //只会执行面条
Mary覆盖了Tom,要想不被覆盖要声明不一样的变量
----------------------------------------
用字面量方法,即使变量名一样也不会被影响
var person1 = {
name:"Tom",
eat:funtion(){
console.log(person1.name+"汉堡");//person1可换成this(详见上一篇)
/*推荐大家在对象内部操作当前对象的属性和方法时用this
因为如果因为某些原因要去改这个person1,下面不需跟着改动,可维护性高*/
}
}
var person2 = {
name:"Tom",
eat:funtion(){
console.log(person2.name+"面条");
}
}
console.log(person1.name);
console.log(person2.name);
person1.eat();
person2.eat();
对象数据类型:可以给数据进行分组,即使属性名和方法名重复,也不会发生覆盖
在开发复杂系统的时候,需要多人协作开发,每个人负责不同的模块
eg:
A同学创建了一个模块
function change(){
}
B同学又加入了一个模块
function change(){
}
那么,两者发生了冲突,怎么办呢?
//a同学这样写
var a = {
change:function(){
}
}
//b同学这样写
var b = {
change:function(){
}
}
完美解决。。
用面向对象的方式写代码 能够实现最基础的一个模块化开发
2.用new创建一个对象
var obj = new Object(); //创建一个空对象
obj.name = "jack";
obj.say = function(){
console.log("i believe i can fly");
}
二、面向对象编程好处
· 可以解决数据分组的问题
· 如果一些数据是描述同一个事物的 我们可以把它们装到一起 不会发生覆盖
· 可以实现模块化开发