JavaScript DOM 操作
1. 理解 DOM文档对象模型( DOM, Document Object Model )主要用于对 HTML 文档的内容进行操作。DOM 把 HTML 文档表达成一个节点树,通过对节点进行操作,实现对文档内容的添加、删除、修改、查找等功能。
2. DOM 节点DOM 节点就是 HTML 上所有的内容 ,包括 : + 文档节点 + 元素节点(标签) + 元素属性节点 + 文本节点 + 注释节点以下总结一些常用的 DOM 操作 :
3. 创建节点
document.createElement(‘元素名’);
创建新的元素节点
document.createAttribute(‘属性名’);
创建新的属性节点
document.createTextNode(‘文本内容’);
创建新的文本节点
document.createComment(‘注释节点’);
创建新的注释节点
document.createDocumentFragment( );
创建文档片段节点
如下,创建了两个元素节点(div 和 p)和一个文本节点(文本内容为”文本 ...
push 和 apply
apply使用 apply 输出的是[“a”, “b”, “a”, “b”]
1234var a=["a","b"];var b=["a","b"];b.push.apply(a,b);console.log(a);
push使用 push 输出的是[“a”, “b”, Array(2)]
1234var a=["a","b"];var b=["a","b"];b.push(a);console.log(b);
单例模式例子-国王与大臣
单例模式例子-国王与大臣第一种写法12345678910111213141516171819202122232425262728293031323334353637383940function Minister(name) {//大臣 this.name=name; } Minister.prototype.say=function() { console.log(this.name+"大王,冤枉啊!"); }; function Emperor() {//大王 this.name="大王"; this.id=Math.random(); // this.instance=null; } Emperor.prot ...
apply 与 this 指向问题
apply 与 this 指向问题this作为apply()第一个参数
123456789var x = 0;function test(){ alert(this.x)}var o = {};o.x = 1;o.m = test;o.m.apply(); // 0o.m.apply(o); //1;
详细解释1.当apply中第一个参数不传时,即相当于第一个参数是null/undefined,此时函数内的this指向的是全局变量global(如果是浏览器,那就是指向window对象),所以打印的是全局变量x的值0。
2.当第一个参数传 o 时,函数内的 this 指向的是 o 对象,o 对象有声明 x 属性为 1,所以返回的值为 1。
js 封装
封装闭包的特性就是有一个全局变量保存函数中的值,从而访问函数的内部
第一种123456789101112131415161718192021222324252627282930function student1() { var privateStore = { }; this._set = function (obj) { for (var i in obj) { privateStore[i] = obj[i]; } }; this._get = function () { return privateStore; }; this.get = function () { ret ...
vs markdown all in one
键
命令
Ctrl + B.
切换粗体
Ctrl + I
切换斜体
Alt + S.
切换删除线
Ctrl + Shift +]
切换标题(上层)
Ctrl + Shift + [
切换标题(下层)
按 Ctrl + M.
切换数学环境
Alt + C.
选中/取消选中任务列表项
Ctrl + Shift + V.
切换预览
Ctrl + KV
将预览切换到侧面
js中对象和数组遍历
javaScript遍历对象、数组总结遍历对象1.使用Object.keys()遍历 返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性).
1234567var obj = {'0':'a','1':'b','2':'c'};Object.keys(obj).forEach(function(key){ console.log(key,obj[key]);});
2.使用for..in..遍历循环遍历对象自身的和继承的可枚举属性(不含Symbol属性).
1234567var obj = {'0':'a','1':'b','2':'c'};for(var i in obj) { console.log(i,":",obj[i]);} ...
计算器
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899<!DOCTYPE html><html><head> <title> 事件</title></head><body> <input type='text' id='num1' /> <select id='operate'> <option value='+'>+</option> <opt ...
程序改进流程
程序改进流程程序修改:1.结构与表现分离。2.使用循环。(明显有规律性的东西,用循环完成)。3.提取函数。(函数的功能尽量单一,简单。)4.管理代码。(为代码找到组织,通过对象,将所有的变量或小功能函数变成属性或方法,通过对象存取处理)5.OCP原则(Open Closed Principle)开放与封闭原则。(更新功能的时候,尽量不要修改原有代码,提供一个接口(写一个函数当作接口,在接口内判断参数错误可以抛出异常),添加功能,不能影响原有的程序,少用switch)。6.模块化。(可用自执行函数包裹,将全局变量变为局部变量,但这种方法没有往外暴露接口;暴露接口:找到该模块的核心功能,以及必传的一些参数,将其封装成一个函数,函数内部有返回值,可以返回内部的函数接口,可用变量接收,这个变量就是接口)7.输入格式校验,输出格式处理
arguments转换为数组
首先这个方法:[].slice.call(arguments)能将具有length属性的对象转成数组。
1、arguments是一个类数组对象。
2、slice(start, end) 方法可提取数组的某个部分,并以新的数组返回被提取的部分。
3、call()函数用于调用当前函数,并可同时使用指定对象作为本次执行时函数内部的this指针引用。
[]数组有slice方法,可以通过call显式绑定来实现arguments变相有slice这个方法。
所以就是arguments调用了slice方法,后面1是start位置,arguments.length是end位置。最后返回了一个数组,供apply()方法使用。