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);
答案: