5 js面向对象的思想--闭包,圆形,对象
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script type="text/javascript">
//三種變量 三種方法
function Person1(){
var name="wiki";
this.name2 = "wiki2";
function m1(){
alert("m1");
}
this.m2=function(){
alert("m2");
m1();
};
}
Person1.ourname="wiki3";
Person1.m3=function(){
alert("m3");
}
var p = new Person1();
/* alert(p.name);
alert(p.name2);
alert(Person1.ourname); */
/*p.m1();*/
/* p.m2();
Person1.m3(); */
//动态添加删除对象
p.v1="v1";
p.v2=function(){
alert("v2");
};
/* alert(p.v1);
p.v2();
delete p.v1;
delete p.v2;
alert(p.v1);
p.v2();//没有回出错 */
//this动态指向 --this指定什么就算什么
var names = "wiki";
function say(){
alert(this.names);
}
var car = {names:"hello",say:say};
/* say();
car.say();
car.say.apply(window); */
//圆形问题
function Person2(){};
var p2 = new Person2();
/* alert(Person2.prototype);
alert(Person2.prototype.constructor);
alert(p2.prototype); */
//原型继承实例
function Person3(name){
this.name=name;
this.say=function(){
return this.name;
};
};
function Child(){
}
Child.prototype=new Person3("i am a person");
var child = new Child();
alert(child.say());
//闭包实例 +方法加方法必须返回里面的方法名,否则语法错误
//闭包使得变量永久保存于内存中
function Person4(){
var n=998;
function getN(){
n++;
alert(n);
};
function getM(){
alert(n+"11");
};
return getN;
}
var result = Person4();
result();
result();
</script>
</head>
<body>
</body>
</html>