javascript原生方法实现extend

var extend = (function () {    for(var p in {toString:null}){        //检查当前浏览器是否支持forin循环去遍历出一个不可枚举的属性,比如toString属性,如果不能遍历不可枚举的属性(IE浏览器缺陷),那么forin循环不会进来        return function extend(o) {            for(var i =1,len=arguments.length;i<len;i++){                var source = arguments[i];                for(prop in source){                    o[prop] = source[prop];                }            }

        }    }    //这些属性需要特殊检查一下,因为有的IE浏览器不支持for in去遍历这些属性    var protoprops = ["toString","valueOf","constructor","hasOwnProperty","isPropertyOf","propertyIsEnumerable","toLocalString"];    return function patched_extend(o){        for(var i =1,len=arguments.length;i<len;i++){            var source = arguments[i];            for(prop in source){//先遍历常规的属性                o[prop] = source[prop];            }            //检查是否有特殊属性,防止漏掉            for(var j =0,len=protoprops.length;j<len;j++){                prop = protoprops[j];                if(source.hasOwnProperty(prop)){                    o[prop] = source[prop];                }            }        }        return o;    }}());
时间: 2024-12-20 23:03:51

javascript原生方法实现extend的相关文章

JavaScript原生对象属性和方法详解——Array对象 转载

length 设置或返回 数组中元素的数目. 注意:设置 length 属性可改变数组的大小.如果设置的值比其当前值小,数组将被截断,其尾部的元素将丢失.如果设置的值比它的当前值大,数组将增大,新的元素被添加到数组的尾部,它们的值为 undefined.所以length不一定代表数组的元素个数. var arr = new Array(3) arr[0] = "John" arr[1] = "Andy" arr[2] = "Wendy" cons

javascript 原生得到document.Element的方法

今天这里写这个博客的主要目的是记录一下javascript原生的选择dom的集中方法. 1.document.getElementById.这个方法接收1个参数,就是DOM元素的id(区分大小写),改这也是平时用的最多的方法,并且用这种方法DOM查找的效率是最高的,所以如果能用id查找的dom元素尽量用id来查询,返回的类型是DOM ELEMENT. 2.document.getElementsByTagName.这个方法接收1个参数,需要查询的元素标签(不区分大小写).返回的是一个 HTMLC

扩展javascript原生对象

原文地址: http://javascript.info/tutorial/native-prototypes 原生的javascript 对象在prototypes里面保存他们可用的方法. 比如,当我们创建一个新的对象时, 它并未包含任何东西,它怎么知道能够有个toString方法可供使用呢? var obj={}; alert(obj.toString()) 那是因为obj={}是下面语句 obj = new Object() 的缩写,而Object是原生的javascript 构造函数,而

【前端】强大的javascript原生选择器querySelector 和 querySelectorAll

querySelector 和 querySelectorAll 在传统的 JavaScript 开发中,查找 DOM 往往是开发人员遇到的第一个头疼的问题,原生的 JavaScript 所提供的 DOM 选择方法并不多,仅仅局限于通过 tag, name, id 等方式来查找,这显然是远远不够的,如果想要进行更为精确的选择不得不使用看起来非常繁琐的正则表达式,或者使用某个库.事实上,现在所有的浏览器厂商都提供了 querySelector 和 querySelectorAll 这两个方法的支持

[转] 有趣的JavaScript原生数组函数

在JavaScript中,可以通过两种方式创建数组,Array构造函数和 [] 便捷方式, 其中后者为首选方法.数组对象继承自Object.prototype,对数组执行typeof操作符返回‘object’而不是‘array’.然而执 行[] instanceof Array返回true.此外,还有类数组对象使问题更复杂,如字符串对象,arguments对象.arguments对象不是Array的实例,但却 有个length属性,并且值能通过索引获取,所以能像数组一样通过循环操作. 在本文中,

【转】Javascript原生Ajax请求

什么是 ajaxajax 即“Asynchronous JavaScript and XML”(异步 JavaScript 和 XML),也就是无刷新数据读取. http 请求 首先需要了解 http 请求的方法(GET 和 POST). GET 用于获取数据.GET 是在 URL 中传递数据,它的安全性低,容量低. POST 用于上传数据.POST 安全性一般,容量几乎无限. ajax 请求 ajax 请求一般分成 4 个步骤. 1.创建 ajax 对象 在创建对象时,有兼容问题: var o

通过js调用android原生方法

有时候我们有这样一个需求,监听html中控件的一些事件.例如点击html中某个按钮,跳转到别的activity,复制某段文本. 首先是对webview的设置: myWebView = (WebView) findViewById(R.id.myWebView); myWebView.getSettings().setJavaScriptEnabled(true); myWebView.addJavascriptInterface(new JavaScriptinterface(this), "a

javascript原生事件总结

javascript原生的事件,总结了一下,包括事件流.处理函数.事件对象这几样东西.而在兼容性方面,主要是老牌ie8以及以下和现代浏览器的差异,也就是ie和DOM事件标准的差异. 事件流这个事件流ie4和Netscape4提出来的,但是两个公司提出的事件流确实刚好相反的.ie的是事件冒泡,Netscape的是事件捕获.ie会从触发事件的元素一直往上冒泡直到document元素.如图ie8以下包括ie8的Netscape则是从document元素开始往下传播一直到触发事件的元素.如图而DOM标准

js 原生方法获取所有兄弟节点

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible"