![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
javascript
文章平均质量分 75
hurryshb
这个作者很懒,什么都没留下…
展开
-
JS底层Caller,callee,call,apply详解
在提到上述的概念之前,首先想说说javascript中函数的隐含参数:argumentsArguments该对象代表正在执行的函数和调用它的函数的参数。[function.]arguments[n]参数function :选项。当前正在执行的 Function 对象的名字。 n :选项。要传递给 Function 对象的从0开始的参数值索引。 说明Arguments是进转载 2012-06-14 20:52:40 · 105 阅读 · 0 评论 -
JavaScript变量对象其三:执行上下文的两个阶段
现在我们终于到了本文的核心点了。执行上下文的代码被分成两个基本的阶段来处理:进入执行上下文执行代码变量对象的修改变化与这两个阶段紧密相关。注:这2个阶段的处理是一般行为,和上下文的类型无关(也就是说,在全局上下文和函数上下文中的表现是一样的)。进入执行上下文当进入执行上下文(代码执行之前)时,VO里已经包含了下列属性(前面已经说了):函数的所有形参(如果我们是在函数转载 2012-06-17 12:20:21 · 133 阅读 · 0 评论 -
JavaScript探秘:构造函数 Constructor
除了创建对象,构造函数(constructor) 还做了另一件有用的事情—自动为创建的新对象设置了原型对象(prototype object) 。原型对象存放于 ConstructorFunction.prototype 属性中。例如,我们重写之前例子,使用构造函数创建对象“b”和“c”,那么对象”a”则扮演了“Foo.prototype”这个角色: // 构造函数function转载 2012-06-17 12:21:44 · 495 阅读 · 0 评论 -
执行上下文其一:变量对象与活动对象
一个执行的上下文可以抽象的理解为object。每一个执行的上下文都有一系列的属性(我们称为上下文状态),他们用来追踪关联代码的执行进度。这个图示就是一个context的结构。上下文结构除了这3个所需要的属性(变量对象(variable object),this指针(this value),作用域链(scope chain) ),执行上下文根据具体实现还可以具有任意额外属性。接着,让我们转载 2012-06-17 12:22:41 · 819 阅读 · 0 评论 -
JavaScript探秘:eval()是“魔鬼”
如果你现在的代码中使用了eval(),记住该咒语“eval()是魔鬼”。此方法接受任意的字符串,并当作JavaScript代码来处理。当有问题的代码是事先知道的(不是运行时确定的),没有理由使用eval()。如果代码是在运行时动态生成,有一个更好的方式不使用eval而达到同样的目标。例如,用方括号表示法来访问动态属性会更好更简单:// 反面示例var property = "name";a转载 2012-06-17 12:24:58 · 880 阅读 · 0 评论 -
JavaScript作用域链其二:函数的生命周期
函数的的生命周期分为创建和激活阶段(调用时),让我们详细研究它。函数创建众所周知,在进入上下文时函数声明放到变量/活动(VO/AO)对象中。让我们看看在全局上下文中的变量和函数声明(这里变量对象是全局对象自身,我们还记得,是吧?)var x = 10; function foo() { var y = 20; alert(x + y);} foo(); // 30转载 2012-06-17 12:31:24 · 182 阅读 · 0 评论 -
javascript 杂谈之哪种写法你更喜欢?
<!--.c_head {background-color:gray; padding-left:5px; color:white; font-size:20px; font-weight:bold}.c_nb {border:1px dotted #999; margin:10px; padding:5px}.c_body td {border:1转载 2012-06-17 00:55:02 · 159 阅读 · 0 评论 -
JavaScript变量对象其一:VO的声明
JavaScript编程的时候总避免不了声明函数和变量,以成功构建我们的系统,但是解释器是如何并且在什么地方去查找这些函数和变量呢?我们引用这些对象的时候究竟发生了什么?大多数ECMAScript程序员应该都知道变量与执行上下文有密切关系:var a = 10; // 全局上下文中的变量 (function () { var b = 20; // function上下文中的局部变量转载 2012-06-17 11:40:15 · 330 阅读 · 0 评论 -
JavaScript探秘:原型链 Prototype chain
型对象也是普通的对象,并且也有可能有自己的原型,如果一个原型对象的原型不为null的话,我们就称之为原型链(prototype chain)。A prototype chain is a finite chain of objects which is used to implemented inheritance and shared properties.原型链是一个由对象组成的有转载 2012-06-17 12:00:38 · 149 阅读 · 0 评论 -
JavaScript函数其二:函数表达式
另外一种可以取代函数声明的方式是函数表达式,解释如下:函数表达式函数表达式(缩写为FE)是这样一种函数:在源码中须出现在表达式的位置有可选的名称不会影响变量对象在代码执行阶段创建这种函数类型的主要特点在于它在源码中总是处在表达式的位置。最简单的一个例子就是一个赋值声明:var foo = function () { ...};该例演示是让一个匿名函数表达式赋值给转载 2012-06-17 12:18:31 · 345 阅读 · 0 评论 -
JavaScript变量对象其三:执行上下文的两个阶段
现在我们终于到了本文的核心点了。执行上下文的代码被分成两个基本的阶段来处理:进入执行上下文执行代码变量对象的修改变化与这两个阶段紧密相关。注:这2个阶段的处理是一般行为,和上下文的类型无关(也就是说,在全局上下文和函数上下文中的表现是一样的)。进入执行上下文当进入执行上下文(代码执行之前)时,VO里已经包含了下列属性(前面已经说了):函数的所有形参(如果我们是在函数转载 2012-06-17 12:09:55 · 129 阅读 · 0 评论 -
JavaScript探秘:对象Object
ECMAScript是一门高度抽象的面向对象(object-oriented)语言,用以处理Objects对象。当然,也有基本类型,但是必要时,也需要转换成object对象来用。An object is a collection of properties and has a single prototype object. The prototype may be either an o转载 2012-06-17 11:56:21 · 121 阅读 · 0 评论 -
JS 中动态添加事件
在 JS 中动态添加事件,涉及到浏览器兼容性问题。结合我的实践经验以及从网上收集的一些资料,特整理在此,希望有点用。function document.oncontextmenu() { ...............};等价与:document.oncontextmenu = function() { ..................}等价于:转载 2012-06-14 20:53:45 · 168 阅读 · 0 评论 -
js中this的用法
this是js的一个关键字,随着函数使用场合不同,this的值会发生变化。但是总有一个原则,那就是this指的是调用函数的那个对象。1、纯粹函数调用。 function test() { this.x = 1; alert(x);}test(); 其实这里的this就是全局变量。看下面的例子就能很好的理解其实this就是全局对象Global。转载 2012-06-14 20:55:11 · 85 阅读 · 0 评论 -
javascript的prototype继承
基本的用法 把ClassA的一个实例赋值给ClassB function ClassA(){ this.a='a';}function ClassB(){ this.b='b';}ClassB.prototype=new ClassA();var objB=new ClassB();for(var p in objB)document.write(p+"");转载 2012-06-14 20:58:49 · 78 阅读 · 0 评论 -
Javascript 中的原型函数(prototype)的工作原理
Javascript 中的原型函数(prototype)的工作原理,在 javascript 中每次声明新函数的过程中,就会为其创建一个 prototype 的属性。在未加其他附带条件情况下,所有的 prototype 属性都会自动获取 constractor 属性,constructor 内包含一个指向 prototype 属性所属函数的指针(就是说 constructor 回指构造函数本身)。转载 2012-06-14 20:59:58 · 110 阅读 · 0 评论 -
悟透JavaScript
引子 编程世界里只存在两种基本元素,一个是数据,一个是代码。编程世界就是在数据和代码千丝万缕的纠缠中呈现出无限的生机和活力。 数据天生就是文静的,总想保持自己固有的本色;而代码却天生活泼,总想改变这个世界。 你看,数据代码间的关系与物质能量间的关系有着惊人的相似。数据也是有惯性的,如果没有代码来施加外力,她总保持自己原来的状态。而代码就象能量,他存在的唯一目转载 2012-06-14 21:01:41 · 911 阅读 · 0 评论 -
javascript事件处理机制——容易被我们遗忘的细节问题
最近在细读mootools core源代码中,在阅读到包装Event的时候,才发现,以前没对js事件处理处理机制深入的研究.遂,再次翻开尘封已久的java犀牛书,仔细的阅读了一把. 我们在书写js程序的时候,在很大程度上,都是写客户端交互程序,所以大部分都可以事件有关.但是遗憾的是,这些事件处理程序的细节非常复杂.并且由于浏览器的不同,目前有四种不同的事件处理机制:原始事件模型:转载 2012-06-16 22:07:28 · 135 阅读 · 0 评论 -
js里面call和apply
官方定义:调用一个对象的一个方法,以另一个对象替换当前对象。我对js里面call和apply的理解是回调父类的方法,并将父类实例化到当前对象的prototype上。其实对此一直都比较模糊,只能通过一些例子来加深一些理解。var color = "red";function sayColor(p) { alert(p + this.color);};sayColor();//转载 2012-06-17 00:57:28 · 98 阅读 · 0 评论 -
JavaScript变量对象其二:VO在不同的执行上下文中
不同执行上下文中的变量对象对于所有类型的执行上下文来说,变量对象的一些操作(如变量初始化)和行为都是共通的。从这个角度来看,把变量对象作为抽象的基本事物来理解更为容易。同样在函数上下文中也定义和变量对象相关的额外内容。view sourceprint?1抽象变量对象VO (变量初始化过程的一般行为)2转载 2012-06-17 11:45:41 · 169 阅读 · 0 评论 -
JavaScript变量对象其四:关于变量
常,各类文章和JavaScript相关的书籍都声称:“不管是使用var关键字(在全局上下文)还是不使用var关键字(在任何地方),都可以声明一个变量”。请记住,这是错误的概念:任何时候,变量只能通过使用var关键字才能声明。上面的赋值语句:a = 10;这仅仅是给全局对象创建了一个新属性(但它不是变量)。“不是变量”并不是说它不能被改变,而是指它不符合ECMAScript转载 2012-06-17 12:30:37 · 316 阅读 · 0 评论