我们都有一个误区,就是认为形成 Javascript 对象的prototype chain 的 prototype 就是一个名字为 prototype 的属性,而且是可以访问的。其实,Javascript 的 prototype 和 名字为 prototype 的属性在一开始一点儿关系都没有,是两个不同的事物。 var Richard = new Object(); alert(typeof(Richard.prototype)); //undefinedvar Richard = new Object(); alert(Richard.__proto__); //[object Object]对于一般对象来说,我们只能...
1 <!doctype html>2 <html lang="en">3 <head>4 <meta charset="UTF-8">5 <title>Document</title>6 <script type="text/javascript">7/* 8 每个函数都有一个prototype属性,这个属性是指向一个对象的引用,这个对象称为原型对象,原型对象包含函数实例共享的方法和属性,也就是说将函数用作构造函数调用(使用new操作符调用)的时候,新创建的对象会从原型对象上继承属性和方法。9*/10function employee(n...
日常只是使用,对于__proto__,prototype,construct属性知道的总是解释不太清楚,有点糊里糊涂,一知半解,今天理理清楚。js中使用的对象,有函数对象,声明对象,实例化对象。例子代码:funtion Person(){ };var p=new Person();1.__proto__和construction是对象所具有的属性,2.prototype是函数所具有的属性,是实例化对象所共有的属性和方法的对象,是实例化对象所共享的对象。因为函数也是一种对象,所以函数也具有__proto_...
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...
一、 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...
本文转载自博客园。作者:叶剑锋出处:http://www.cnblogs.com/yjf512/archive/2011/06/03/2071914.html 本文基于下面几个知识点:1 原型法设计模式在.Net中可以使用clone()来实现原型法原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展。我们称B的原型为A。 2 javascript的方法可以分为三类:a 类方法b 对象方法c 原型方法例子:function People(name){ this.name=name; //对象方法 thi...