前言关于JavaScript中this的用法网络中已经有较多比较详尽的介绍,可以参考本文的参考学习资料和网络。本文结合网络收集整理,尝试以一种简易的方式阐述JavaScript中this的用法,希望对大家关于JavaScript中this用法的快速理解有所帮助。正文1. this用法实例[javascript] window.color = “red”; var o = { color: “blue” }; function sayColor(){ alert(this.color); } sayColor(); //”red” o.sayColor = sayColor; o.sa...
数组有四种定义的方式使用构造函数:var a = new Array();var b = new Array(8);var c = new Array("first", "second", "third");或者数组直接量:var d = ["first", "second", "third"];属性Array只有一个属性,就是length,length表示的是数组所占内存空间的数目,而不仅仅是数组中元素的个数,在刚才定义的数组中,b.length的值为8<script>var a = new Array("first", "second", "third")a[48] = "12"document.write(a.length)/...
参数默认值是指在调用函数时,若省略了某个实参,函数会自动为该参数分配一个默认值,使得函数调用的方便性和灵活性大大提高。举个例子,比如PHP中的字符串截取函数substr(string,start,length),当不指定length时,函数将默认截取字符串中start位置到字符串结束,而如果指定了length,则截取从start位置开始的以length为长度的字符串,所以如果调用的是substr(http://www.hualai.net.cn,11,6),则返回的是hualai;如果省略掉最后一...
最近做项目中牵扯到要写一些cookie的例子,发现在自己在js方面还有很多的不足,然需要努力:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title><script type="text/javascript" src="js/common/jque...
工作中遇到一个问题,两个字符串匹配,要求:每个字符串中最多含有一个*,?可以无限多个*代表一个任意长度的字符串,而?则代表一个字符要求可以提示出两个冲突<input type="text" id="str1"><br><input type="text" id="str2"><br><input type="button" onclick="checkMarchX()" value="CHECK">用Javascript实现代码如下:[javascript] function checkMarchX() { var str1 = document.getElementById(str1).value; ...
同一个标示符,先后用var和function声明它。最后它是什么呢?var a; // 声明一个变量,标识符为afunction a() { // 声明一个函数,标示符也为a}alert(typeof a);显示的是“function”,即function的优先级高于var。有人觉得这是代码顺序执行的原因,即a被后执行的funcion覆盖了。好,将它们调换下。function a() {}var a;alert(typeof a); 结果仍然显示的是“function”而非“undefined”。即函数声明优先于变量声明。我们把代码稍...
HashMap在程序设计中,具有无可替代的重要作用。它提供m.put(key,value); m.get(key);之类的数据存储及读取方式,非常方便。但在JavaScript(HTML4.0的版本) 中,并没有提供这样的一种对象。以下这段代码用于创建Map对象,我已使用多年,效果良好,供需要的朋友参考。 一、Map源代码 /** Map is a general map object for storing key value pairs * @param m - default set of properties */var Map =function(...
JavaScript常常遇到一些键值对,以前用二维数组实现,今天索性模拟了一下Dictionary帮助类。原理:创建一个对象,包含两个数组,键数组和值数组,调用JavaScript Array对象的方法。W3C参考地址:http://www.w3school.com.cn/js/jsref_obj_array.aspBuildDictionary()方法用于创建一个包含两个数组的Dictionary对象AddItem方法 调用JavaScript的 Array对象的push方法,用于将key,value追加到相应的数组。UpdateItem方法用于更改相应...
我们经常需要在JavaScript中给Element动态添加各种属性,这可以通过使用setAttribute()来实现,这就涉及到了浏览器的兼容性问题。setAttribute(string name, string value):增加一个指定名称和值的新属性,或者把一个现有的属性设定为指定的值。1、样式问题setAttribute("class", value)中class是指改变"class"这个属性,所以要带引号。vName代表对样式赋值。例如:var input = document.createElement("input");input.setAttribut...
方法链一般适合对一个对象进行连续操作(集中在一句代码)。一定程度上可以减少代码量,缺点是它占用了函数的返回值。 一、对象链:方法体内返回对象实例自身(this)view sourceprint?01 function ClassA(){ 02 this.prop1 = null; 03 this.prop2 = null; 04 this.prop3 = null; 05 } 06 ClassA.prototype = { 07 method1 : function(p1){ 08 this.prop1 = p1; 09 return this; 10 }, 11 met...
首先说函数的定义:view sourceprint?function Hanshu() { //函数体... }这样我们就定义了一个名为Hanshu的函数,现在我们尝试调用一下这个函数。其实很简单,调用函数就是用函数的名称加括号,即:Hanshu();这样我们就调用了这个函数。我们用一个按钮调用一下这个函数:将按钮的点击事件指向这个方法<input type="button" value="click me" onclick="Hanshu()">现在我在此方法中再写一个方法我们在这个方法中将body的点击事...
TextRange对象是动态HTML(DHTML)的高级特性,使用它可以实现很多和文本有关的任务,例如搜索和选择文本。文本范围让您可以选择性的将字符、单词和句子从文档中挑选出来。TextRange对象是在HTML文档将要显示的文本流上建立开始和结束位置的抽象对象。下面是TextRange的常用属性与方法:属性boundingHeight 获取绑定TextRange对象的矩形的高度boundingLeft 获取绑定TextRange 对象的矩形左边缘和包含TextRange对象的左侧之间的距离of...
基本原理在js中变量包括5中基本类型以及一个复杂数据类型Object,当然常用的函数和数组都是对象。对于基本类型和复杂类型,对应着两种不同的存储方式–栈存储和堆存储。为什么要实现两种存储方式的理由很简单,就是基本类型一旦初始化则内存大小固定,访问变量就是访问变量的内存上实际的数据,称之为按值访问。而对象类型说不定什么时候就会增加自身的大小,内存大小不固定。比如动态添加对象的属性、动态增加数组的大小等等都会使...
自定义事件:用户可以指定事件类型,这个类型实际上就是一个字符串,然后为这个类型的事件指定事件处理函数,可以注册多个事件处理函数(用数组管理),调用时,从多个事件处理函数中找到再调用。function EventTarget(){this.handlers={};}EventTarget.prototype={constructor:EventTarget,addHandler:function(type,handler){if(typeof this.handlers[type]==undefined){this.handlers[type]=new Array();}this.handlers[type].p...
所有代码使用 ES2015 语法,需要 ES5 语法的可以用 Babel - Try it out 或者 TypeScript Playground 翻译。问题提出今天有朋友问我一个问题,前端通过 Ajax 从后端取得了大量的数据,需要根据一些条件过滤,过滤的方法是这样的:class Filter { filterA(s) { let data = this.filterData || this.data; this.filterData = data.filter(m => m.a === s); } filterB(s) { let data = this.filterData || this.data; this.filterData ...