/*
* 补充对象的知识
*/
//先创建一个对象
var obj = new Object();
//向对象添加属性
obj.name = '唐三彩';
obj.age = 2000;
//对象的属性值可以是任何的数据类型
/*
* 那么属性值可以不可以是函数?
*
* 其实,上面那句话已经说了,对象的属性值可以是任何的数据类型,这里就包括函数。
* 既然可以是函数,那该这么写呢?
* 接下来就开始写
*/
obj.sayName = function(){
console.log('属性值可以是函数');
};
/*
* 既然,可以把函数当做属性值,那么就可以被调用,如何调用?
* 调用方法有两种:
* 一种是直接对象调属性名,使用这种调用方式就相当于复制
* obj.sayName
* 另一种是对象调属性名加小括号,这种方式才是调用这个属性名的匿名函数
* obj.sayName()
*/
console.log("第一种方式:"+obj.sayName);
/*
* 打印的结果是:
* function(){
* console.log('属性值可以是函数');
* }
*
* 从打印的结果来看,使用obj.sayName调用所得到的值是一个匿名函数,而不是函数中的console.log('属性值可以是函数');
* 要想打印console.log('属性值可以是函数');就需要使用第二种使用方法obj.sayName()
*/
//使用第二种方法调用
obj.sayName();
/*
* 打印结果是:
* 属性值可以是函数
*
* 从打印的结果来看,使用obj.sayName()调用所得到的值是匿名函数中的console.log('属性值可以是函数')。
*
* 综上所述,在使用这两种调用方法是根据实际情况来定的,如果需要传匿名函数,就使用第一种,如果只是想要向这个
* 函数中传值或者是触发这个匿名函数的方法,那就使用第二种方法,这个可以叫做调用对象的方法。
*
* 注意:调函数和调方法没有本质的区别,只是一个名称的差别,
* 调函数:
* a()
* 调方法:
* obj.sayName()
*
* 一个是函数名调用,一个是对象调用。
*
* 在js中还有很多种调用谁谁的方法,例如:"hello".toString();,这是"hello"调用toString()方法;
* document.write();,这是document调用write()方法,这两个就是调用方法。
* 注意:在当什么调用什么方法时,一定要加点"."只有当什么点什么方法时,才能算是调用方法,不然会报错,切记切记!
*
* 函数也可以称为对象的属性,
* 如果一个函数作为一个对像的属性保存,那么我们称这个函数时,这个对象的方法
* 调用这个函数就说调用对象的方法(method)
*
* 但是它只是名称的区别没有其他的区别,其作用都是一样的。
*/
//document调用write()方法
//document.write()
/*
* 还是一种对象的写法,那么还有一种对象的写法,该怎么写匿名函数哪?
*
*/
//第二种对象写法
var obj2 = {
name:'唐二彩',
age:3000,
sayName1:function(){
/*
* 这就是属性匿名函数的写法,
* 冒号和等号写法使用函数方法当做对象属性值
* 既然,对象可以无限添加属性名和属性值,那么,
* 属性值匿名函数也可以写多个
*/
console.log('我是'+obj2.name);
},sayName2:function(){
/*
* 这就是属性匿名函数的写法,
* 冒号和等号写法使用函数方法当做对象属性值
* 既然,对象可以无限添加属性名和属性值,那么,
* 属性值匿名函数也可以写多个
*/
console.log('我有'+obj2.age+'岁');
}
}
//实现属性值函数方法,那么,就需要调用,其实,这个调用和上面那个调用方法是一样
obj2.sayName1();
obj2.sayName2();
/*
* 来看一下sayName1()方法和sayName2()方法内的console.log的打印结果:
* sayName1()方法结果:
* 我是唐二彩
* sayName2()方法结果:
* 我有3000岁
*
* 对象内的函数方法,必须要用对象名去打点调用函数方法
* 语法:
* 对象名.属性名();
*
* 注意:对象与对象之间不可以互相调用对方的函数方法,比如: A对象内有一个a1()函数方法,
* B对象内有一个b1()函数方法,A可以调用自身内的函数方法,B可以调用自身的函数方法。但是,
* A对象不能去调用 b2()函数方法,B对像不能去调用 a1()函数方法,他们都是对象为什么不可
* 以不想调用?????
* 因为A和B是两个独立存在的对象,它们之间不能互相调用自身属性名。
*
*/
标题可以能写的不对,如果您有正确的名字请,留言告诉我,谢谢!