JS基础 --对象函数方法

92 阅读4分钟
                /*
		 * 补充对象的知识
		 */
		//先创建一个对象
		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是两个独立存在的对象,它们之间不能互相调用自身属性名。
		 *  
		 */
		
		标题可以能写的不对,如果您有正确的名字请,留言告诉我,谢谢!