js12---闭包,原型,继承
<html>
<body>
<script type="text/javascript">
//闭包实现了函数层面多个子函数共享父类函数的属性、方法(继承)。类层面上原型实现了多个子类对象共享父类对象的属性、方法(继承)。
//函数每调用一次,就会开启一个新的内存区域让函数执行。类的成员方法也是,每调用一次就开辟一个新的内存区域。
function f1(){
var b = ;
var c = function(){alert();}
return function(g){
b++;
if(g == ){
c = function(){alert(b);alert();}
}
c();
}
} var d1 = f1();//大函数return函数模版,函数模版多次执行时地址不一样,
alert("===");
d1();//
alert("---");
d1();//3 456,改变了大函数的c
alert("+++");
d1();//4 456,使用改变了的c var d2 = f1();//大函数return函数模版,函数模版多次执行时地址不一样,
alert("===");
d2();//
alert("---");
d2();//3 456,改变了大函数的c
alert("+++");
d2();//4 456,使用改变了的c
</script>
</body>
</html>
var cat = (function(){//函数嵌套,就是类中类,
//私有静态属性
var AGE = 10;
//私有函数
function add(x,y){
return x+y;
}
return function(){
//多个子类,使用外层闭包的公有的属性和方法
this.age = ++AGE;
this.add = function(x,y){
//alert(age);//age is not defined
return add(x,y)
}
this.setAge = function(age){
AGE = age;
}
}
})()
alert(new cat().add(1,2));//3,new的时候函数会执行一次
alert(new cat().age);//12
new cat().setAge(100);
alert(new cat().age);//
function Person(name , age){
this.name = name ;
this.age = age ;
this.sayName = function(){alert('我是姓名!')};//sayName指的是函数模型,不同对象的成员方法执行都会开辟新内存区域,
}
var p1 = new Person('z3',);
var p2 = new Person('z4',);
alert(p1.sayName == p2.sayName); // false
var定义的属性和方法相当于是私有的属性和方法,不同函数对象的方法的地址是不一样的。
js12---闭包,原型,继承的更多相关文章
- 【09-23】js原型继承学习笔记
js原型继承学习笔记 function funcA(){ this.a="prototype a"; } var b=new funcA(); b.a="object a ...
- JS面向对象(2) -- this的使用,对象之间的赋值,for...in语句,delete使用,成员方法,json对象的使用,prototype的使用,原型继承与原型链
相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...
- inheritprototype原型继承封装及综合继承最简实例
1.inheritprototype.js ;(function(){ var s = { inheritObject:function(o){//对象继承封装 ...
- 理解javascript的闭包,原型,和匿名函数及IIFE
理解javascript的闭包,原型,和匿名函数(自己总结) 一 .>关于闭包 理解闭包 需要的知识1.变量的作用域 例1: var n =99; //建立函数外的全局变量 function r ...
- JavaScript-原型&原型链&原型继承
JavaScript-原型&原型链&原型继承 JavaScript的原型是一个重要的知识点,很多扩展应用都是从原型出发的.要说原型,我们先简单说一下函数创建过程.上一篇文章用闭包实现类 ...
- javaScript的原型继承与多态性
1.prototype 我们可以简单的把prototype看做是一个模版,新创建的自定义对象都是这个模版(prototype)的一个拷贝 (实际上不是拷贝而是链接,只不过这种链接是不可见,给人们的感觉 ...
- JS继承之原型继承
许多OO语言都支持两种继承方式:接口继承和实现继承.接口继承只继承方法签名,而实现继承则继承实际的方法.如前所述,由于函数没有签名,在ECMAScript中无法实现接口继承.ECMAScript只支 ...
- JS原型继承和类式继承
前言 一个多月前,卤煮读了一篇翻译过来的外国人写的技术博客.此君在博客中将js中的类(构造)继承和原型继承做了一些比较,并且得出了结论:建议诸位在开发是用原型继承.文中提到了各种原型继承的优点,详细的 ...
- 高级javascript---原型和原型继承
高级javascript---原型和原型继承 在 JavaScript 中,prototype 是函数的一个属性,同时也是由构造函数创建的对象的一个属性. 函数的原型为对象. 它主要在函数用作构造函数 ...
- web前端学习(二) javascript对象和原型继承
目录 1. JavaScrpt对象 2. 原型对象和继承 3. 对象的克隆 (1)javascript对象 在JS中,对象是属性的容器.对于单个对象来说,都由属性名和属性值构成:其中属性名需要是标识符 ...
随机推荐
- 深入理解Struts2
简单介绍 Struts 2是Struts的下一代产品.是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架. 其全新的Struts 2的体系结构与Struts 1的 ...
- CF Mike and Feet (求连续区间内长度为i的最小值)单调栈
Mike and Feet time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- Android中ViewPager的使用
我们在一个apk中第一次開始的时候,会有一个guide界面.一般使用ViewPager来完毕. 布局文件例如以下: <? xml version="1.0" encoding ...
- vue17 $watch 监听数据变化
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- shrio 登录/退出
身份验证,即在应用中谁能证明他就是他本人.一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用户名/密码来证明. 在shiro中,用户需要提供principals (身份)和cre ...
- Gym - 100625G Getting Through 计算几何+并查集
http://codeforces.com/gym/100625/attachments/download/3213/2013-benelux-algorithm-programming-contes ...
- axure中使用HighCharts模板制作统计图表
一. 步骤: 1.在axure中新建页面,发布并生成html文件: 2.将HighCharts文件夹,拷贝到生成的html文件中: 3.拖拽“内部框架组件”到界面中 4.双击界面中的内部框架,设置链接 ...
- HDU 4513 吉哥系列故事――完美队形II
http://acm.hdu.edu.cn/showproblem.php?pid=4513 吉哥系列故事——完美队形II Time Limit: 3000/1000 MS (Java/Others) ...
- openSUSE Leap与 SELS的区别
openSUSE Leap 是 openSUSE 常规发行版本的新名称,在 13.2 之前它仅仅被称为“openSUSE”. 一.openSUSE 发行周期:(15年以前仅有一个openSUSE发行版 ...
- 翻译《虚幻引擎4艺术大师 - 蓝图 III 》 中文版
本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/49800063 作者:c ...