JS学习 面向对象 2


js中还提供了一种主动销毁对象属性的方法

 

基本语法是

 

delete 对象名.属性名;  //不要这样 delete 对象;

 

原理可以主动的销毁某个对象的属性




u     this

①    提出问题?

我们在编程中,可能需要当我们创建一个对象后,这个对象就自动的有某些属性,怎么?

 

 

可以这样做:

function Person(){

              //下面这句话表示,每创建一个Person实例,实例就会自动有一个属性

              //name,并且是公开

              this.name="小童";

       }

 

如果你希望name是创建对象实例的时候指定,可以通过参数传入:

 

functionPerson(name){

              //下面这句话表示,每创建一个Person实例,实例就会自动有一个属性

              //name,并且是公开

              this.name=name;

       }

 

使用的时候:

 

$p4=new Person(“顺平”);

 

$p4.name;

 

②    深入认识this的含义

 

//下面的代码讲解私有属性的怎样访问

 

 

 

              function Person(){

                     var name="abc";//私有的,只能在内部使用

                     var age=900; //私有的,只能在内部使用

 

                     //感受(相当于你是通过内部函数来访问私有的变量.)

                     //如何理解: 说有一个属性 show 因为前面有this

                     //说明 show属性是公开. 该属性是指向一个函数地址属性.

                     //则通过 show去调用该函数.

                     this.show=function(){

                            window.alert(name+""+age);

                     }

 

              }

              var p1=new Person();

              //window.alert(p1.name+""+p1.age);//错误

              p1.show();

 

 

对this的再认识:

<html>

<head>

<metahttp-equiv="content-type"content="text/html;charset=utf-8"/>

 

<scripttype="text/javascript">

//****案例如下****

function test1(){

 

   alert(this.v);

}

var v=190;

test1(); //输出什么 <==> window.test1();

 

window.test1();

</script>

</html>

 

u     this 只能在类定义的内部使用:

 

//说明this 只能在 类定义的内部使用

 

              function Dog(){

                     this.name="小明";

              }

 

              var dog1=new Dog();

      

      

              window.alert(this.name); //报空, 因为这样使用,相当于去访问window对象的name属性,但是你没有写.

 

☞ 补充讲解一个 var 的知识点:

 

//表示全局变量

       var t=90;

 

       function test(){

             

              t=890;

       }

 

       test();

       window.alert(t);

 

说明: var 变量: 表示该变量是全局的, 如果你其他函数中,使用变量是,前面没有带 var , 则表示要使用全局变量.如果你在函数中 使用变量时候,带了 var 则说明你要使用全新的变量.



u     js面向对象的成员函数

 

如果我们希望某个对象创建后,自动有方法使用,可以在定义类的时候,直接指定成员函数.

 

第一种方法: 动态的给某个对象指定函数

*/

 

              function Person(name,age){

                    

                     this.name=name;

                     this.age=age;

 

                    

              }

 

              //第一种方法,动态添加

              function speak(){

                     document.write("我是"+this.name);

              }

 

              //创建一个对象实例

              var p1=new Person("大黄",90);

              p1.fun1=speak; //相当于动态的给p1对象分配一个fun1属性(函数);

      

              window.alert(p1.fun1);

              p1.fun1();

 

第一种方法还有一种体现形式

//创建一个对象实例

              var p1=new Person("大黄",90);

              p1.fun1=function speak(){

                     document.write("我是"+this.name);

              }; //相当于动态的给p1对象分配一个fun1属性(函数);

      

 

第二种方法: 让所有的Person对象实例都有某个成员函数

 

//给所有对象分配函数

 

              function Person(name,age){

                    

                     this.name=name;

                     this.age=age;

 

                     this.speak=function (){

                            document.write(this.name+"hello");

                     }

              }

 

              var p1=new Person("小孩",9);

              p1.speak();

              var p2=new Person("大明",30);

              p2.speak();

 

 

 

☞ 关于给对象指定成员函数说明:

如果添加的内部函数,该函数也称为特权函数,所谓特权指的是可以访问对象的私有属性.

 

如果添加的是外部函数(给某个对象指定的函数),则这样指定函数,只能访问对象的公开属性,不能访问私有属性.

 

functionPerson(name,age,salary){

             

              this.name=name;//公开

              this.age=age;//公开

              var salary=salary;//私有

 

 

       }

 

       var p1=new Person("宋江",34,1000);

 

       function showInfo(){

              document.write(this.name+this.age+salary);//这里salary是私有

       }

 

       p1.showInfo=showInfo;

 

       p1.showInfo();

 

u     js面向对象的成员函数

 

如果我们希望某个对象创建后,自动有方法使用,可以在定义类的时候,直接指定成员函数.

 

第一种方法: 动态的给某个对象指定函数

*/

 

              function Person(name,age){

                    

                     this.name=name;

                     this.age=age;

 

                    

              }

 

              //第一种方法,动态添加

              function speak(){

                     document.write("我是"+this.name);

              }

 

              //创建一个对象实例

              var p1=new Person("大黄",90);

              p1.fun1=speak; //相当于动态的给p1对象分配一个fun1属性(函数);

      

              window.alert(p1.fun1);

              p1.fun1();

 

第一种方法还有一种体现形式

//创建一个对象实例

              var p1=new Person("大黄",90);

              p1.fun1=function speak(){

                     document.write("我是"+this.name);

              }; //相当于动态的给p1对象分配一个fun1属性(函数);

      

 

第二种方法: 让所有的Person对象实例都有某个成员函数

 

//给所有对象分配函数

 

              function Person(name,age){

                    

                     this.name=name;

                     this.age=age;

 

                     this.speak=function (){

                            document.write(this.name+"hello");

                     }

              }

 

              var p1=new Person("小孩",9);

              p1.speak();

              var p2=new Person("大明",30);

              p2.speak();

 

 

 

☞ 关于给对象指定成员函数说明:

如果添加的内部函数,该函数也称为特权函数,所谓特权指的是可以访问对象的私有属性.

 

如果添加的是外部函数(给某个对象指定的函数),则这样指定函数,只能访问对象的公开属性,不能访问私有属性.

 

functionPerson(name,age,salary){

             

              this.name=name;//公开

              this.age=age;//公开

              var salary=salary;//私有

 

 

       }

 

       var p1=new Person("宋江",34,1000);

 

       function showInfo(){

              document.write(this.name+this.age+salary);//这里salary是私有

       }

 

       p1.showInfo=showInfo;

 

       p1.showInfo();

 

课堂小练习

 

Number类

 

var i=90;

var res=i.add(78).add(90).add(900).add(9000)

 

window.alert(res);



答案:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值