javascript面向对象(属性和方法应注意的有关问题)
原型添加的属性和方法与定义的属性和方法注意的问题:
<script type="text/javascript">
//应用原型,添加成员变量,//创建一个构造函数或者类
var People = function(){};
//创建对象,通过构造函数
var p1 = new People();
p1.name = "张三";
var p2 = new People();
p2.com = function (i,j){return i-j };
//通过原型prototype 给People类的所有对象添加成员变量
var pt = People.prototype;
pt.name = "明铭";
pt.age = 23;
pt.com = function(i,j){return i+j};
//通过原型prototype,给People添加方法
//说明原型变量不会覆盖,对象自己添加的属性变量
alert(p1.name);//输出张三
alert(p2.name);//输出明铭
alert(p2.age);
alert(p1.age == p2.age);
//注意,通过对象添加的方法,如果与通过原型对象添加的方法同名,则会出现对象方法覆盖原型方法
alert(p2.com(30,20));
//People不是静态成员,因此不能直接调用属性(输出undefind)
alert(People.age);
</script>
成员变量,函数调用应该注意的问题:
<script type="text/javascript">
//变量的定义域,所有的成员变量都相当于一个window的属性
var a = 10;
b = 20;
function Hello()
{
alert("hello");
}
alert(a);
alert(b);
//注意,这儿是直接打印出来函数的名字,找到函数的定义,这不是调用
alert(Hello);
Hello();
//通过window调用
alert(window);
alert(window.a);
alert(window.b);
alert(window.Hello);
window.Hello();
//在方法中,定义的属性,没有var 相当于全局变量,var c = 是局部变量
function test()
{
c = 100;
//var d = 1000;
}
test();
alert("c="+c);
//alert("d="+d);
</script>