<!DOCTYPE html>
<html>
<head>
<title></title>
<script>
//javascrpt 面向对象的封装和继承
//demo
var person=function()
{
var name='defaut';// 定义成员函数,封装属性,外界无法直接使用
return{
setName:function(newName)
{
name=newName;
},
getName:function()
{
return name;
}
}
};
person.prototype.run=function(){
alert('run');
}
var p=new person();//生成p对象,p为匿名的对象{setName:function(newname){name=newname},getName:function(){return name}}
//alert(p);
//原理通过闭包,由于name在一个子函数内,函数并付给了一个全局变量,里边函数无法释放,使的person执行过后也无法释放。name一直停留在内存。
p.setName('lisi');//设置属性
alert(p.getName());//获得属性
// p.run();//Uncaught TypeError: Object #<Object> has no method 'run' 错误,:原因是p不是person对象,而是一个返回对象。{setName:function(newname){name=newname},getName:function(){return name}}。
//prototype只能在函数对象中,使用。
var jhon=function(){};//声明一个空对象
//继承
jhon.prototype=new person();
jhon.prototype.eat=function(){
alert('eat');
}
var j=new jhon();
j.eat();
j.setName('wangwu');
alert(j.getName());
</script>
</head>
<body>
</body>
<html>
<head>
<title></title>
<script>
//javascrpt 面向对象的封装和继承
//demo
var person=function()
{
var name='defaut';// 定义成员函数,封装属性,外界无法直接使用
return{
setName:function(newName)
{
name=newName;
},
getName:function()
{
return name;
}
}
};
person.prototype.run=function(){
alert('run');
}
var p=new person();//生成p对象,p为匿名的对象{setName:function(newname){name=newname},getName:function(){return name}}
//alert(p);
//原理通过闭包,由于name在一个子函数内,函数并付给了一个全局变量,里边函数无法释放,使的person执行过后也无法释放。name一直停留在内存。
p.setName('lisi');//设置属性
alert(p.getName());//获得属性
// p.run();//Uncaught TypeError: Object #<Object> has no method 'run' 错误,:原因是p不是person对象,而是一个返回对象。{setName:function(newname){name=newname},getName:function(){return name}}。
//prototype只能在函数对象中,使用。
var jhon=function(){};//声明一个空对象
//继承
jhon.prototype=new person();
jhon.prototype.eat=function(){
alert('eat');
}
var j=new jhon();
j.eat();
j.setName('wangwu');
alert(j.getName());
</script>
</head>
<body>
</body>
</html>
闭包什么研究:
<!DOCTYPE html>
<html>
<head>
<title></title>
<script>
var name='default';
var obj={
name:'zhangsan',
getName:function()
{
var that=this;
return function()
{
return that.name;
};
}
};
alert(obj.getName()());
</script>
</head>
<body>
</body>
</html>