js中对象this注意细节

来源:互联网 发布:mac度数符号怎么打 编辑:程序博客网 时间:2024/05/16 08:01
function Person(){var name ="abc";//私有的,只能在内部使用var age = 90;//私有的,只能在内部使用this.name2 = "abc2";this.show=function(){ //如果你一定要访问私有属性,则需要定义一个公开的方法(特权方法)windows.alert(name+" "+age);}function show2(){window.alert("show2()"+ name + " "+age);}}var p1 = new Person();//错误p1.show();
function test1(){alert(this.v)}var v =90;window.test1();//打印90 哪个对象实例调用this所在函数,那么this就代表哪个对象
function Person(name,age){this.name = name;this.age = age;this.show=function(){ document.write("名字="+this.name);//这里的name要用this.name}}
//给一个对象添加指定的函数的方式1function Person(){this.name = "tom";this.age = 10;}function show1(){ window.alert("hello"+this.name);} var p1 = new Person(); p1.abc= show1; p1.abc();//给一个对象添加指定的函数的方式2function Person(){this.name = "tom";this.age = 10;} var p1 = new Person(); p1.abc= function show1(){ window.alert("hello"+this.name); }; p1.abc();
 function Dog(){//如何给对象添加公共方法? } var dog1 = new Dog(); dog1.shout=function(){ window.alert('小狗'); }  dog1.shout(); var dog2 = new Dog(){ } dog2.shout();//这里报错,一个对象动态添加的方法只能为该对像使用,其他对像不行 //那么如何使几个对象共用一个方法? //这时候原型法(prototype就起作用了)相当于在模版上进行了修改,原来的只是动态添加而已,模版没动 function Dog(){ } var dog1 =new Dog(); Dog.prototype.shout=function(){window.alert('小狗'); } dog1.shout(); var dog2 = new Dog(); dog2.shout();//这样就OK




原创粉丝点击