关注互联网、关注WEB前端设计、关注技术、关注程序、关注生活
上一篇:网页播放器param name标签 下一篇:优秀WEB前端开发者必备的四种品质

JS如何进行数据访问的

  js  中有四种基本的数据存储位置:
        直接量:不存储在特定位置,代表是:字符串,数字,布尔,对象,数组,函数,正则,null,undefined。
        变量:用var 关键字定义的数据存储单元。
        数组元素:存储在js  数组对象内部,以数字作为索引。
        对象成员:存储在js 对象内部,以字符串作为索引。
        不同的存储位置访问的时候效率不同,总得来说,直接量和局部变量的访问速度快于数组和对象成员的访问速度,firefox3是例外,它优化了数组的存取。建议:如果在乎运行速度,尽量使用直接量和局部变量!
        
        标识符的解析过程中,如果一个标识符所在的位置越深,它的读写速度就越慢,因此,函数中读写局部变量是最快的,读写全局变量通常是最慢的,因为全局变量总是存在于运行期上下文作用域链的最末端的。如果某个跨作用域的值在函数中被引用一次以上,那么就将它存储到局部变量中。
function test(){
    var bd = document.body,
        links = document.getElementsByTagName('a'),
        i = 0,
        len = links.length;
        while(i<len){
   document.getElementById('go').onclick = function(){
   click();
            }
        }
}
如上情况,document这个全局对象在方法中被访问了不止一次,每次搜过此变量的过程都要遍历整个作用域链,直到最后在全局对象中找到。所以我们可以先将document存储到一个局部变量中,以减少对全局的访问次数。
function test(){
    var doc = document,
        bd = doc.body,
        links = doc.getElementsByTagName('a'),
        i = 0,
        len = links.length;
        while(i<len){
   doc.getElementById('go').onclick = function(){
   click();
            }
        }
}

        原型:js中的对象是基于原型的,原型是其他对象的基础,定义并实现了一个新对象必须包含的成员列表。对象通过一个内部属性绑定到它的原型,在Firefox,Safari,Chrome浏览器中可以通过__proto__属性查看原型属性,其他浏览器不允许访问,当我们创建一个内置对象的实例的时候,它们就会自动拥有一个Object实例作为原型了。
        所以,对象可以有两种成员类型,实例成员(也成“own”成员)和原型成员。实例成员存在于对象实例中,而原型成员则由对象原型继承而来。
        var book = {
                        title:"ss"
                }
        alert(book.toString());        //"[object Object]"
        可以看到我们并没有定义toString这个方法,但是却没有报错,因为toString() 方法是从对象book的原型继承而来的原型对象。
        总结:1.访问直接量和局部变量速度最快。
                   2.通常在跨域访问时,将常用的对象成员保存到局部变量中以改善js 的性能。
                   3.全局变量总是处于作用域链的最末端,多以访问速度是最慢。

欢迎关注,TC文章有的来源于网络,如果侵犯了您的权益,我们将在第一时间处理。

本文地址:http://20tc.com/int/webfont/2054.html

订阅博客

  • 订阅我的博客:订阅我的博客
  • 关注新浪微博:关注新浪微博
  • 关注腾讯微博:关注腾讯微博

热点标签

Google 广告

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本站内容必须也遵循"署名-非商业用途-保持一致"的创作共用协议.
This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License.