javascript 立即销毁内存 js怎么销毁实例_内部函数


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);




答案:

javascript 立即销毁内存 js怎么销毁实例_私有属性_02