js面向对象

  对应于智能社26课。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
	<script>
		var a = [23,'we',153];
		a.show = function(){
			alert('we');	
		}
		a.show();
		console.log("a.show 1_-:"+a.show);/*
						     a.show 1_-:function (){
							 alert('we');	
							}
						  */
		console.log("a.show 2_-:"+typeof a.show);  // a.show 2_-:function
		console.log("a.show 3_-:"+typeof a.show());// a.show 3_-:undefined
	</script>
</head>

<body>
</body>
</html>

  1.一个对象如果有某个方法属性,那上面的代码作为例子,如果要调用这个的话,直接a.show()这种方式就可以。

     2.如果要看这个属性,则只要通过a.show的方式,而不需要加"()";

  

通过这小段程序的调试,我们可以知道,
1.一个对象(指的变量a)的属性或者方法属性,我们访问的时候都是通过a.属性的方式,如a.m,a.show。
2.a.show和a.show()的含义是不同的,前者是访问属性,如就和a.m = "wer"一样,
a.show = function(){alert('we');} ,而a.show()的含义是执行show这个
方法属性里的方法的具体代码,这个例子中就是直接在页面上弹出‘we'字样,因此如果想通过下面这种方 式console.log('a.show():'+a.show())
来查看a.show()到底是什么,那么得到的结果就是 undefined。我个人的理解是这样的,
console.log('a.show:'+a.show()) ,首先会执行a.show(),即前面讲的执行这个show这个方法属性里的具体方法,即弹出'we',然后执行console.log()代码,这个时候浏览器会认为a.show()是访问点“.”后面的属性即show()这个属性,而通过右上角的调试栏里的代码显示,对象a只有show这个属性,而没有show()这个属性,因此会返回值是undefined。
总结:a.show()作为单独的一行代码,浏览器则直接执行function show(),而a.show()本身作为其他代码中的一段的时候,那么会先执行function show(),然后访问把show()当作一个属性来访问。

  

原文地址:https://www.cnblogs.com/Sunnor/p/4639634.html