javascript构造函数+原形继承+作用域扩充
目前为止我认为这是最佳的声明对象的模式,将今天学到的东西写下
- <script type="text/javascript">
- function Constructor(obj,options){
- this.selector = options.selector;
- this.time = options.time;
- this.step = options.step;
- this.obj = document.getElementById(obj);
- //私有方法,将不被共享,所以此方法在各个实例中不是不相等的
- this.fuck = function(){
- //code here
- alert('fuck');
- }
- }
- //公共方法,原形继承,方法在实例中是相等的
- Constructor.prototype.getName = function(){
- //code here
- alert(this.selector);
- }
- Constructor.prototype.setName = function(){
- //code here
- alert(this.time);
- }
- Constructor.prototype.getIndex = function(){
- //code here
- alert(this.step);
- }
- //call继承,通过继承可以扩充实例化后的对象的作用域,call(obj,[,arr1[,arr2[,arr3]]]);
- //obj作为第一个参数即是this指针的指向,通过重新定义指针,可以将函数的作用域赋予继承对象中;
- //后面的参数为可选项,以逗号分隔开。这是与apply方法区别之处;
- function callFunc(a,b){
- this.a = a;
- this.b = b;
- this.c = function(){
- return this.a + this.b;
- }
- }
- //apply继承
- //call继承,通过继承可以扩充实例化后的对象的作用域,call(obj,[arr1,arr2,arr3]);
- //obj作为第一个参数即是this指针的指向,通过重新定义指针,可以将函数的作用域赋予继承对象中;
- //后面的第二个参数为可选项,以数组形式存在。这是与apply方法区别之处;
- function applyFunc(a,b){
- this.a = a;
- this.b = b;
- this.c = function(){
- return this.a * this.b;
- }
- }
- //实例化一个对象Constructor1
- var Constructor1 = new Constructor('slider',{
- selector:'selector',
- time:2000,
- step:30
- });
- //实例化一个对象Constructor2
- var Constructor2 = new Constructor('slider',{
- selector:'selector',
- time:2000,
- step:30
- });
- console.log(Constructor1 instanceof Constructor);//true
- console.log(Constructor2 instanceof Constructor);//true
- console.log(Constructor1.fuck == Constructor2.fuck);//false
- //call继承callFunc中作用域
- callFunc.call(Constructor1,1,2);
- console.log(Constructor1.c());//3
- //apply继承applyFunc中作用域
- applyFunc.apply(Constructor1,[3,2]);
- console.log(Constructor1.c());//6
- </script>
javascript构造函数+原形继承+作用域扩充的更多相关文章
- JavaScript 构造函数的继承
JavaScript 构造函数的继承 在上一篇文章中讲述了 JS 对象.构造函数以及原型模式,这篇文章来讨论下 JavaScript 的继承 继承是 OO 语言中的一个最为人津津乐道的概念.许多 OO ...
- Javascript 构造函数原型继承机制
我们先聊聊Js的历史,1994年Netscape公司发布了Navigator浏览器0.9班.这是历史上第一个比较成熟的网络浏览器.轰动一时.但是,这个版本的浏览器只能用来浏览,不具备交互功能,最主要的 ...
- JavaScript构造函数、继承的理解
前两天稍微深入一点点理解了原型和原型链,然后就开始有挺多疑问的: function dog() { this.name = "huahua"; } var cat = new do ...
- Javascript构造函数的继承
仅供学习参考,原文链接:http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_inheritance.html 今天要介绍 ...
- JavaScript构造函数+原型创建对象,原型链+借用构造函数模式继承父类练习
虽然经常说是做前端开发的,但常常使用的技术反而是JQuery比较多一点.在JavaScript的使用上相对而言少些.尤其是在创建对象使用原型链继承上面,在项目开发中很少用到.所以今天做个demo练习一 ...
- (三)Javascript面向对象编程:非构造函数的继承
Javascript面向对象编程:非构造函数的继承 这个系列的第一部分介绍了"封装",第二部分介绍了使用构造函数实现"继承". 今天是最后一个部分,介绍不使 ...
- (二)Javascript面向对象编程:构造函数的继承
Javascript面向对象编程:构造函数的继承 这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生成实例. 今天要介绍的是,对象之间的"继承 ...
- Javascript面向对象编程(三):非构造函数的继承(对象的深拷贝与浅拷贝)
Javascript面向对象编程(三):非构造函数的继承 作者: 阮一峰 日期: 2010年5月24日 这个系列的第一部分介绍了"封装",第二部分介绍了使用构造函数实现&quo ...
- Javascript面向对象编程(二):构造函数的继承 作者:yuan一峰
Javascript面向对象编程(二):构造函数的继承 作者: 阮一峰 日期: 2010年5月23日 这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生 ...
随机推荐
- asp.net动态设置button的Text,Enabled属性,向后台传递参数
前台代码:根据后台传递过来的参数动态设置 <asp:Button ID="Button1" runat="server" CommandArgument= ...
- 关于textbox.attributes["value"]的问题
在“修改”时,出现这个问题,后台点击修改时,应该是文本框出现一些初始值 BLL.manager bll = new BLL.manager(); Model.manager model = bll.G ...
- jquery获取checkbox被选中的值
只用一个循环,就可以找出被选中的checkbox的值 var s; $("[name = b]:checkbox").each(function () { ...
- Android-操作栏之图标导航
想实现图标向上导航功能,步子分两步走: 1.样式上要改变-->图标要变成可点击的按钮,并有一个向左的箭头. 2.功能上要实现-->实现向上导航 首先谈第一步: 对于拥有fragment的a ...
- Visual Studio 2015开发Android App问题集锦
Visual Studio 2015开发Android App 启动调试始终无法完成应用部署的解决方案 创建一个Android App项目后,直接启动调试发现Visual Studio Emulato ...
- SQL存储过程笔记
一.概述 存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库.用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它. 优点: ...
- 用jquery向网页添加背景图片 拉伸 模糊 遮罩层 代码
方法一:手动添加 1.在body内任意位置添加html代码 <div id="web_bg" style=" position:fixed; _position:a ...
- web标准(复习)--3 二列和三列布局
今天学习二列和三列布局,将涉及到以下内容和知识点 二列自适应宽度 二列固定宽度 二列固定宽度居中 xhtml的块级元素(div)和内联元素(span) float属性 三列自适应宽度 三列固定宽度 三 ...
- SQL建模错误--逗号分隔值
最近帮一个客户分析SQL语句的问题,大致经过如下 场景: 委托方有一个用于追踪他们产品的系统,每个产品都会卖给许多客户:但是客户又被从业务上分成两类,一类是带有合作伙伴性质的,这个 合作伙伴通常会给予 ...
- GCD使用经验与技巧浅谈--备
GCD(Grand Central Dispatch)可以说是Mac.iOS开发中的一大“利器”,本文就总结一些有关使用GCD的经验与技巧. dispatch_once_t必须是全局或static变量 ...