JavaScript和ActionScript函数相互调用示例
函数声明 JavaScript函数: ActionScript函数: 调用示例 JavaScript调用ActionScript方法: ActionScript调用JavaScript方法: 说明:若在JavaScript中获取ActionScript函数体,会得到如下内容:
函数声明 JavaScript函数: ActionScript函数: 调用示例 JavaScript调用ActionScript方法: ActionScript调用JavaScript方法: 说明:若在JavaScript中获取ActionScript函数体,会得到如下内容:
1).VBScript示例 2).JavaScript示例
给构造函数添加一个方法我们通常这么做: 也有人是直接将一个自定义对象赋值给prototype: 暂时没发现有什么使用上的问题,但还是发现了一点不同:我们知道,原型对象默认有一个属性constructor,他指向构造函数本身,测试一下: 结果显示: function Class() { this.Name = "Class"; } 结果显示: function Object() { } 这和Object.prototype.constructor的结果是一样的,也就是说:将自定义对象赋值给prototype后,改变了原型对象constructor属性的值,他不再是表示prototype所对应的构造函数,其值是超类(Object)的构造函数。
"构造函数prototype属性的值是一个对象,该对象即为构造函数的原型对象。添加给这个原型对象的任何属性,都会成为被构造函数所初始化的对象的属性。" 这两句话高度概括了JavaScript构造函数的原型对象,我们来理解下: ·第一句说明了原型对象其实就是类的一个属性,不同于实例属性,不管创建了该类的多少个实例,他们都共享该属性; ·第二句说明了一个特性:构造函数实例化对象将继承原型对象的属性; 所以,原型对象是放置方法和其他不变属性的理想地方!
问题的提出 首先看一个例子: 运行结果是什么呢? 上面的问题, 我相信会有很多人会认为是: laruence eve 因为会以为在echo中, 第一次alert的时候, 会取到全局变量name的值, 而第二次值被局部变量name覆盖, 所以第二次alert是'eve'. 而age属性没有定义, 所以脚本会出错. 但其实, 运行结果应该是: undefined eve 为什么呢? JavaScript的作用域链 首先让让我们来看看Javasript(简称JS, 不完全代表JScript)的作用域的原理: JS权威指南中有一句很精辟的描述: "JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里." …
1.实现类"继承"(将一个类的成员复制给一个对象) 调用apply时,o对象就是Rectangle函数中this的值,因而实现了属性的复制。 2.给类设置初始化函数
本文结合 ECMA 262 规范详解了闭包的内部工作机制,让 JavaScript 编程人员对闭包的理解从"嵌套的函数"深入到"标识符解析、执行环境和作用域链"等等 JavaScript 对象背后的运行机制当中,真正领会到闭包的实质。 简介 闭包是 ECMAScript (JavaScript)最强大的特性之一,但用好闭包的前提是必须理解闭包。闭包的创建相对容易,人们甚至会在不经意间创建闭包,但这些无意创建的闭包却存在潜在的危害,尤其是在比较常见的浏览器环境下。如果想要扬长避短地使用闭包这一特性,则必须了解它们的工作机制。而闭包工作机制的实现很大程度上有赖于标识符(或者说对象属性)解析过程中作用域的角色。…
1.调用对象 当函数被调用的时候,在作用域链顶部创建一个他的调用对象,函数的参数、变量等在调用对象中都有定义,调用对象的下一层为全局对象。当检测到不再有对函数的引用时,调用对象即被删除。在上边例子中,fn(0)调用fn时,创建了fn的调用对象,其里面有对i的定义。 同一个函数多次调用时,将会创建多个调用对象,举例: 2.闭包 执行结果: 1 2 3 说明:当调用f时,创建了f的调用对象,里边包含有i和g的定义,fn中包含了对g引用,所以,当给fn赋值之后,虽然后面的代码中不再有对f的引用,但f的调用对象仍不会被删除(若删除了调用对象,fn将无法使用)。当调用fn时,作用域链上就有三个对象:fn的调用对象、f的调用对象和全局对象,由于f的调用对象未被删除,那么他的属性i对于fn而言就相当于是一个全局变量,所以多次调用fn时,i的值将递增。…
暂时只支持左上、右上、左中、右中、左下、右下六个位置,通过组合可做成对联广告。 IE(6.0)、FF(2.0)、Opera(9.6)测试通过。
今天写了段脚本,结果执行出错,脚本内容大致如下: 调试了好久,猜测是this的问题,修改了下代码: 第一次提示"Class1",第二次提示"window",随即脚本出错。为了说明问题,将脚本分解执行: 正确的脚本: 相当于: 2009-07-23 借助闭包实现: 《JavaScript权威指南》第五版P936: setTimeout(code,delay),当code执行的时候,它是在Window对象的环境中执行的。如果code是一个函数,Window对象就是this关键字的值。如果code是一个字符串,它是在全局作用域中执行的,而Window对象是作用域链上唯一的对象。即便setTimeout()的调用发生在一条长长的作用域链上的一个函数之中,这也是成立的。…