js 类对象
总结:私有属性和方法: 函数中使用var , 函数外使用 对象
函数中:var name="zhangsan"; var show=function(){}
函数外:var p =new Person(); p.weight=180; p.eat=function(){};
公有属性和方法: 函数中使用this , 函数外使用prototype
函数中使用:this.name="张三" this.show=function(){};
函数外使用:Person.prototype.name="张三" Person.prototype.show=function(){}
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
// ******************1.定义类并创建类的实例对象**********************************************
function Person(){//类似java的构造方法
}
var p = new Person();//创建p对象
// ******************2.定义公有属性和私有属性**********************************************
/*
定义私有属性: 1.在构造函数中 使用var定义 2.在构造函数外 使用 对象.属性名
定义公有的属性: 1.在构造函数中 this.属性名定义 2.在构造函数外 函数名.prototype.属性名=默认值
*/
function Person(){
var name ="张三";//私有属性
this.age=100; //公有属性
}
var p = new Person();
p.weight=180;//私有属性 只属于p
alert(p.weight);//180
var p1= new Person();
alert(p1.weight+":"+p1.name);//两个undefined
Person.prototype.height=190;
//alert(p1.age+":"+ p.age)//100:100
//alert(p1.height+":"+ p.height);//190:190
// ******************3.定义公有方法和私有方法**********************************************
/*
1.定义私有方法:在函数中 采用 var 方法名=function(){}定义 var showInnerPrivate=function(){}
在函数外 采用 对象名.方法名=function(){} p.eatOuterPrivate=function(){}
2.定义公有方法: 在函数中 this.方法名=function(){};
在函数外 函数名.prototype.方法名=function(){}
*/
function Person(){
var show=function(){
alert("我是私有方法");
}
this.display=function(){//公有方法
alert("我是display公有方法,我调用了类中的私有方法show(),结果是:");
show()
}
}
Person.prototype.sing=function(){//公有方法
alert("我喜欢唱忘情水");
}
show();//直接调用调用不了
var p = new Person();
alert(p.show());//创建对象也调用不了
p.display();//ok
p.eat=function(){
alert("我要吃鸡肉");
}
p.eat();//我要吃鸡肉
var p1 = new Person();
p1.eat();//报错
p1.sing();//sing(是公有的方法可以被调用)
// ******************4.静态属性和静态方法*********************************************
/*
注意:js中静态属性和方法只能用函数名去定义和调用,不能用对象去调用
*/
function Person(){
}
Person.name="张三";
Person.see=function (){
alert("我是静态方法");
}
alert(Person.name);//在ie中弹出 张三 在google中弹出Person
Person.see();
// ******************5.无参和有参构造函数*********************************************
/*
注意:构造函数无重载,所以函数的名字不能重复 ,重复后面覆盖前面
*/
// ******************6.创建对象的三种方式*********************************************
/*
1.new 函数名(); var p = new Person();
2.new Object(); var p = new Object();
3.json格式 var json ={"a":"中国","b":"美国","c":"小日本"};
*/
var obj = new Object();
obj.name="李四";
alert(typeof (obj)+obj.name);//Object 李四
var json ={"a":"中国","b":"美国","c":"小日本"};
var json1 ={1:"冲田杏梨",2:"波多野结衣",3:"苍井空"};
alert(typeof (json)+json.a+json["b"]);//object 中国 美国 推荐这种json["b"]
alert(json1[1]);//冲田杏梨 json1.1报错
//拿到所有的用for in迭代
for(i in json1){
alert("我最爱的女优:"+json1[i]);
}
</script>
</body>
</html>
浙公网安备 33010602011771号