[ 作者:byeyear Email:east3@163.com 转载请注明 ]古希腊有哲学家认为,在那遥远的虚无之处,人类目光所不能及的地方,有一匹原型马,世间万马皆依此而生。我们有构造函数horse()用于从原型马构造一匹我们能看到、触摸到、骑到的马:function horse()
{this.color = ‘red‘;this.height = 80;this.length = 160;
}// Now, if you want, you can construct your own horse.// var myHorse = new horse();可以从该构造函数访...
用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了,最近看了一些 JavaScript高级程序设计,终于揭开了其神秘面纱。每个函数都有一个prototype属性,这个属性是指向一个对象的引用,这个对象称为原型对象,原型对象包含函数实例共享的方法和属性,也就是说将函数用作构造函数调用(使用new操作符调用...
http://www.jb51.net/article/25027.htmhttp://blog.csdn.net/chunqiuwei/article/details/22092551http://developer.51cto.com/art/200907/134913.htm 总结:特别说明:只有构造函数才有prototype属性,而构造函数的实例是没有该属性的,也就是说 console.log(a1.prototype)输出的是undefined。在javascript中,每个函数都自动有一个prototype属 性,而不是每一个对象拥有prototype属性 原型属性与实例对象的创建与否没有关系,它...
1. 1// Function.prototype.bind() 的作用 2 3// 1.Creating a bound function 4this.x = 9; 5var module = {6 x: 81,7 getX: function() { returnthis.x; }8 };9 10 console.log(module.getX()); // 81 11 12var retrieveX = module.getX;13 console.log(retrieveX()); 14// 9, because in this case, "this" refers 15// to the global object 16 17// Create a new function with ‘this‘ bound to ...
接上一讲,prototype可以用于动态增强对象,那么有些js的原生类,没有提供我们想要的功能的时候,我们就可以用prototype对其增强。下面是一些具体的案例,希望大家能举一反三:<pre name="code" class="javascript">//检测指定元素是否在数组中
Array.prototype.contains=function(e){for(i in this){if(this[i]===e)return true; }return false;
};
//测一测
alert(new Array('a','b').contains('a'));
var arr = ['red','yellow'...
1、prototype
在JavaScript中并没有类的概念,但JavaScript中的确可以实现重载,多态,继承。这些实现其实方法都可以用JavaScript中的引用和变量作用域结合prototype来解释。
2、Simple Examplevar Blog = function( name, url ){this.name = name;this.url = url;
};
Blog.prototype.jumpurl = ‘‘;
Blog.prototype.jump = function(){window.location = this.jumpurl;
};
/**等同于
Blog.prototype = {jumpurl : ‘‘,jump : fu...
原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。
原型模式有简单形式和登机形式两种表现 形式。
简单形式的原始模型模式
简单形式UML类图如下:
原型模式的角色有
客户端角色(ClientPro):
抽象原型角色(ProtoType):
具体原型角色(ConcreteProtoType):被复制的对象
代码如下:publicinterfaceProtoType {/*** 根据自身克隆出新...
一、 JavaScript 设计思想 1994年,网景公司(Netscape)发布了Navigator浏览器0.9版。这是历史上第一个比较成熟的网络浏览器,轰动一时。但是,这个版本的浏览器只能用来浏览,不具备与访问者互动的能力。比如,如果网页上有一栏"用户名"要求填写,浏览器就无法判断访问者是否真的填写了,只有让服务器端判断。如果没有填写,服务器端就返回错误,要求用户重新填写,这太浪费时间和服务器资源了。 因此,网景公司急需一种网...
类似C++强类型的静态语言中,类型 决定了 值具备的属性及method。设计好的类型在running的过程中,无法变更JavaScript弱类型 动态语言中没有 class 即 语言中是"没有类型",对象的类型 是由运行过程中的值决定。本类型不具备的方法借用其他类型的方法扩展其他类型字符串类型 不具备join方法,但可以借用 其他类型 Array中的方法
let str = ‘foo‘;
var res = Array.prototype.join.call(str,‘-‘);
//output:‘f-o-o‘
在 Number....
以前一直对javascript中的prototype不是很理解,今天在阅读了《javascript高级程序设计之后》终于理解了其中的prototype。来简单的总结一下从书中学习到的内容。 我们都知道在创建了一个function之后,这个function就具有了prototype这样的一个属性,利用这个prototype我们可以做很多的事情,其中我们经常用到的一点就是利用它来当做构造函数,因此,本文重要从function作为构造函数的角度来说明一下prototype。 其实j...
这是一篇markdown格式的文章,更好的阅读体验请访问我的github,移动端请访问我的博客继承是为了实现方法的复用,如何实现方法的复用呢?最容易想到的,就是:```js//mixinfunction extend(optional, base){ for(var prop in base){ if(!prop in optional){ optional[prop] = base[prop] } } return optional}```这种方法俗称`mixin`,它直接从甲对象复制方法和属性和方法到乙对象,乙对象就拥有...
本系列作为Effective JavaScript的读书笔记。 prototype,getPropertyOf和__proto__是三个用来访问prototype的方法。它们的命名方式很类似因此很容易带来困惑。 它们的使用方式如下: prototype:一般用来为一个类型建立它的原型继承对象。比如C.prototype = xxx,这样就会让使用newC()得到的对象的原型对象为xxx。当然使用obj.prototype也能够得到obj的原型对象。 getPropertyOf:Object.getPropertyOf(obj)是ES5中用来得到obj对象的...
本文尝试阐述Js中原型(prototype)、原型链(prototype chain)等概念及其作用机制。上一篇文章(图解Javascript上下文与作用域)介绍了Js中变量作用域的相关概念,实际上关注的一个核心问题是:“在执行当前这行代码时Js解释器可以获取哪些变量”,而原型与原型链实际上还是关于这一问题。我们知道,在Js中一切皆为对象(Object),但是Js中并没有类(class);Js是基于原型(prototype-based)来实现的面向对象(OOP)的编程范式...
读了篇博客感觉很有用"javascript对象的属性,方法,prototype作用范围分析"就自己写了一遍.以后自己可以用的到. 1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 3<head> 4<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/> 5<title>javascript对象的属性,方法,pro...
内容简介
第三个Java设计模式Prototype模式,我们通常使用new关键字指定类名来生成类的实例,但是我们有时也会遇到“在不指定类名的前提下生成实例”的需求。这时候我们通过Prototype模式,就能利用clone方法的Cloneable接口的使用来创建出实例的副本。
实现
首先先要创造一个具有clone方法的抽象类以方便我们进行复制
public abstract class Shape implements Cloneable {private String id;protected String type;abstract void ...