<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script>
/*var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
alert(object.getNameFunc()());*/
/* var name="The window";
var oject={
name:"the content",
getNamefun:function()
{
var that=this;
return function(){
return "name:"+that.name;
}
}
};
alert(oject.getNamefun()());*/
/* var name="Hello world";
var object={
count:0,
name:"hello hy",
getNameFn:function()
{
var c=this.count+5;
return function()
{
alert(c);
return ++c;
}
}
};
alert(object.getNameFn()());*/
/*
function Person()
{
}
Person.prototype.setName=function(name)
{
this.name=name;
}
Person.prototype.getName=function()
{
return this.name;
}
Person.prototype.a="5";
Person.prototype.b=-100;
alert((new Person()).a); //Person.a错误 */
/*function Student()
{
var i=0;
function SuperStudent()
{
i++;
return i;
}
return SuperStudent;
}
var sf=Student();
alert(sf());*/
/* var Circle={
"PI":3.14159,
"area":function(r){
return this.PI * r * r;
}
};
alert( Circle.area(2.0) ); */
/* var dom={};//dom是一个对象
dom.name="zs"; //对象可以直接添加属性
alert(dom.name); //ok可以获取属性
alert(dom.constructor); //返回是一个对象,对象可以直接添加属性及方法
var dom1=function(){
} //dom1只是一个类,还没实例化成对象
alert(dom1.constructor); //返回一个超级类 Function
var mm1=new dom1(); //实例化一个对象
alert("mm1:"+mm1.constructor);
mm1.name="lisi"; //实例化的对象可以直接加属性及方法
alert(mm1.name);*/
/* var dom = function(){
};
alert(typeof dom); //返回 Function
dom.name="zs"; // 错误,此时dom还不是一个对象,而是函数或类,不能直接添加属性
dom.Show = function(){
alert("测试:dom.show是什么类型"+typeof this);
alert("Show Message");
}; //【类可以直接添加方法???】
dom.prototype.Display = function(){
alert("Property Message");
}; //类里加的函数公共块,需要实例化对象后调用
dom.Display(); //error 需要实例化对象后调用
dom.Show(); //直接当函数,直接调用,切记此时dom不是对象,所以不能dom.name属性, dom.Show()直接当函数function
var d = new dom(); //创建类dom的一个对象
d.Display(); //栈里指向一个函数块代码,理解为实例对象d有了函数Display的引用
d.Show(); //error 实例对象d没有Show()方法*/
/*var dom = function(){
var Name = "Default";
this.Sex = "Boy";
this.success = function(){
alert("Success");
};
};
alert(dom.Name);
alert(dom.Sex);*/
/* function Student(){
var i=0;
function SuperStudent(){
i++;
return i;
}
return SuperStudent;
}
var sf=Student();
alert(sf()); // 1
alert(sf()); //2
alert(sf()); //3
*/
/* function Student(){
var i=0;
function SuperStudent(){
i++;
return i;
}
return SuperStudent;
}
alert(Student()()); //1
alert(Student()()); //1
alert(Student()()); //1
*/
/* function $(){
var i=0;
function SuperStudent(){
i++;
return i;
}
return SuperStudent;
}
alert($()()); //1*/
/*(function(){
})(); //【闭包的范式】
*/
/* (function(a){
alert(a);
})(5);*/
/* (function(a){
//var i=0;
// 私有的方法
function aa()
{
alert(a);
}
})(5);
//alert(aa()); //aa为私有方法,不能直接访问
(function(a){
alert(a);
})(window);*/
/* (function(a){
var i=0;
function aa()
{
alert(a);
}
alert(typeof a); //【注意:会弹出5 类型为number】
})(5);*/
/* (function(a){
var i=0;
alert(i);
alert(a);
})(window);*/
/* (function(a){
var i=0;
function aa(){
alert(a);
}
aa(); //弹出5
})(5);*/
/*(function(a){
var i=0;
function aa(){
alert(a);
}
})(5);
(function(a){
alert(a);
})(window);*/
/*(function(a){
var i=0;
function aa(){
alert(a);
}
})(5);
(function(a){
alert(a); //弹出window
})(window); //此处两个闭包
*/
/* (function(a){
var i=0;
function aa(){
alert(a);
}
a.aa;
})(window);
window.aa();//error*/
/* //闭包范式 (function(形参){})(实参);
//在匿名函数中定义的方法,在外怎么样去访问
// 1.可以把其中的一个函数作为浏览器内置对象的一个属性
(function(a){
var i=0;
//a.aa=function(){} 把其中的一个函数作为浏览器内置对象的一个属性
a.aa=function(){
alert(i);
}
})(window);
window.aa();
*/
/*
//闭包范式 (function(形参){})(实参);
//在匿名函数中定义的方法,在外怎么样去访问
// 1.可以把其中的一个函数作为浏览器内置对象的一个属性
// 2.可以让函数返回一个json格式对象,而该对象中的内容就是公开的内容
(function(a){
var i=0;
aa=function(){
alert(i);
}
function b()
{
alert("b"+(++i));
}
function c()
{
alert("c"+(++i));
}
function d()
{
alert("c"+(++i));
}
a.openMethod=function(){
//封装在json格式的内容被公开了
return{
b:b,
c:c,
d:d
};
}
})(window);
window.aa();
window.openMethod().b(); //访问函数里函数
window.openMethod().c(); //访问函数里函数*/
/* //闭包范式 (function(形参){})(实参);
//在匿名函数中定义的方法,在外怎么样去访问
// 1.可以把其中的一个函数作为浏览器内置对象的一个属性
// 2.可以让函数返回一个json格式对象,而该对象中的内容就是公开的内容
(function(a){
var i=0;
aa=function(){
alert(i);
}
function b()
{
alert("b"+(++i));
}
function c()
{
alert("c"+(++i));
}
function d()
{
alert("c"+(++i));
}
a.openMethod=function(){
//封装在json格式的内容被公开了
return{
b:b,
c:c,
d:d
};
}
})(window);
window.aa();
var jsonObject=window.openMethod();
jsonObject.b(); //访问函数里函数
jsonObject.c(); //访问函数里函数
jsonObject.d(); //访问函数里函数*/
/* var hy={};
(function(a){
var i=0;
aa=function(){
alert(i);
}
function b()
{
alert("b"+(++i));
}
function c()
{
alert("c"+(++i));
}
function d()
{
alert("c"+(++i));
}
a.openMethod=function(){
//封装在json格式的内容被公开了
return{
b:b,
c:c,
d:d
};
}
a.m=function()
{
alert("cs");
}
//return a.m;
})(hy);
alert(typeof hy);
for (m in hy)
{
alert(m+" "+hy[m]);
}
hy.m();*/
</script>
</head>
<body>
</body>
</html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script>
/*var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
alert(object.getNameFunc()());*/
/* var name="The window";
var oject={
name:"the content",
getNamefun:function()
{
var that=this;
return function(){
return "name:"+that.name;
}
}
};
alert(oject.getNamefun()());*/
/* var name="Hello world";
var object={
count:0,
name:"hello hy",
getNameFn:function()
{
var c=this.count+5;
return function()
{
alert(c);
return ++c;
}
}
};
alert(object.getNameFn()());*/
/*
function Person()
{
}
Person.prototype.setName=function(name)
{
this.name=name;
}
Person.prototype.getName=function()
{
return this.name;
}
Person.prototype.a="5";
Person.prototype.b=-100;
alert((new Person()).a); //Person.a错误 */
/*function Student()
{
var i=0;
function SuperStudent()
{
i++;
return i;
}
return SuperStudent;
}
var sf=Student();
alert(sf());*/
/* var Circle={
"PI":3.14159,
"area":function(r){
return this.PI * r * r;
}
};
alert( Circle.area(2.0) ); */
/* var dom={};//dom是一个对象
dom.name="zs"; //对象可以直接添加属性
alert(dom.name); //ok可以获取属性
alert(dom.constructor); //返回是一个对象,对象可以直接添加属性及方法
var dom1=function(){
} //dom1只是一个类,还没实例化成对象
alert(dom1.constructor); //返回一个超级类 Function
var mm1=new dom1(); //实例化一个对象
alert("mm1:"+mm1.constructor);
mm1.name="lisi"; //实例化的对象可以直接加属性及方法
alert(mm1.name);*/
/* var dom = function(){
};
alert(typeof dom); //返回 Function
dom.name="zs"; // 错误,此时dom还不是一个对象,而是函数或类,不能直接添加属性
dom.Show = function(){
alert("测试:dom.show是什么类型"+typeof this);
alert("Show Message");
}; //【类可以直接添加方法???】
dom.prototype.Display = function(){
alert("Property Message");
}; //类里加的函数公共块,需要实例化对象后调用
dom.Display(); //error 需要实例化对象后调用
dom.Show(); //直接当函数,直接调用,切记此时dom不是对象,所以不能dom.name属性, dom.Show()直接当函数function
var d = new dom(); //创建类dom的一个对象
d.Display(); //栈里指向一个函数块代码,理解为实例对象d有了函数Display的引用
d.Show(); //error 实例对象d没有Show()方法*/
/*var dom = function(){
var Name = "Default";
this.Sex = "Boy";
this.success = function(){
alert("Success");
};
};
alert(dom.Name);
alert(dom.Sex);*/
/* function Student(){
var i=0;
function SuperStudent(){
i++;
return i;
}
return SuperStudent;
}
var sf=Student();
alert(sf()); // 1
alert(sf()); //2
alert(sf()); //3
*/
/* function Student(){
var i=0;
function SuperStudent(){
i++;
return i;
}
return SuperStudent;
}
alert(Student()()); //1
alert(Student()()); //1
alert(Student()()); //1
*/
/* function $(){
var i=0;
function SuperStudent(){
i++;
return i;
}
return SuperStudent;
}
alert($()()); //1*/
/*(function(){
})(); //【闭包的范式】
*/
/* (function(a){
alert(a);
})(5);*/
/* (function(a){
//var i=0;
// 私有的方法
function aa()
{
alert(a);
}
})(5);
//alert(aa()); //aa为私有方法,不能直接访问
(function(a){
alert(a);
})(window);*/
/* (function(a){
var i=0;
function aa()
{
alert(a);
}
alert(typeof a); //【注意:会弹出5 类型为number】
})(5);*/
/* (function(a){
var i=0;
alert(i);
alert(a);
})(window);*/
/* (function(a){
var i=0;
function aa(){
alert(a);
}
aa(); //弹出5
})(5);*/
/*(function(a){
var i=0;
function aa(){
alert(a);
}
})(5);
(function(a){
alert(a);
})(window);*/
/*(function(a){
var i=0;
function aa(){
alert(a);
}
})(5);
(function(a){
alert(a); //弹出window
})(window); //此处两个闭包
*/
/* (function(a){
var i=0;
function aa(){
alert(a);
}
a.aa;
})(window);
window.aa();//error*/
/* //闭包范式 (function(形参){})(实参);
//在匿名函数中定义的方法,在外怎么样去访问
// 1.可以把其中的一个函数作为浏览器内置对象的一个属性
(function(a){
var i=0;
//a.aa=function(){} 把其中的一个函数作为浏览器内置对象的一个属性
a.aa=function(){
alert(i);
}
})(window);
window.aa();
*/
/*
//闭包范式 (function(形参){})(实参);
//在匿名函数中定义的方法,在外怎么样去访问
// 1.可以把其中的一个函数作为浏览器内置对象的一个属性
// 2.可以让函数返回一个json格式对象,而该对象中的内容就是公开的内容
(function(a){
var i=0;
aa=function(){
alert(i);
}
function b()
{
alert("b"+(++i));
}
function c()
{
alert("c"+(++i));
}
function d()
{
alert("c"+(++i));
}
a.openMethod=function(){
//封装在json格式的内容被公开了
return{
b:b,
c:c,
d:d
};
}
})(window);
window.aa();
window.openMethod().b(); //访问函数里函数
window.openMethod().c(); //访问函数里函数*/
/* //闭包范式 (function(形参){})(实参);
//在匿名函数中定义的方法,在外怎么样去访问
// 1.可以把其中的一个函数作为浏览器内置对象的一个属性
// 2.可以让函数返回一个json格式对象,而该对象中的内容就是公开的内容
(function(a){
var i=0;
aa=function(){
alert(i);
}
function b()
{
alert("b"+(++i));
}
function c()
{
alert("c"+(++i));
}
function d()
{
alert("c"+(++i));
}
a.openMethod=function(){
//封装在json格式的内容被公开了
return{
b:b,
c:c,
d:d
};
}
})(window);
window.aa();
var jsonObject=window.openMethod();
jsonObject.b(); //访问函数里函数
jsonObject.c(); //访问函数里函数
jsonObject.d(); //访问函数里函数*/
/* var hy={};
(function(a){
var i=0;
aa=function(){
alert(i);
}
function b()
{
alert("b"+(++i));
}
function c()
{
alert("c"+(++i));
}
function d()
{
alert("c"+(++i));
}
a.openMethod=function(){
//封装在json格式的内容被公开了
return{
b:b,
c:c,
d:d
};
}
a.m=function()
{
alert("cs");
}
//return a.m;
})(hy);
alert(typeof hy);
for (m in hy)
{
alert(m+" "+hy[m]);
}
hy.m();*/
</script>
</head>
<body>
</body>
</html>