第24篇 js小知识和“坑”】的更多相关文章

前面说了说了js的相关知识,基本上除了语法外,把项目常用的知识做了一个梳理,现在说下js的其它方面的知识,这些知识不成体系,属于不理解对于一般开发没什么太多影响,但如果理解清楚,可以更好去开发. js解析引擎: 引擎的定义: 什么是js解析引擎?简单的说是就能够读懂javascript代码的的平台,如你写一段代码 var a=1;var b=1;var c=a+b;引擎做的事情就这一段代码执行成我们想要的结果,这就是引擎要做的事情. 上面据说的和C/C中的编译过程很像,但是js和C/C有所不同,…
上面一篇文章说了js的作用域链,这一节算是对上面的延申,有一个典型的例子,首先看原来的一段代码: var name = "test"; function t() { var b = 1; if (b === 1) { var name = "test1"; } else { var name = "test2"; } console.log(name); } t(); 这段代码的结果是test1 这个肯定是没有什么问题了,但是如果把代码作如下修改…
JS的连续赋值和曾经出现的怪异情况 let a=1; let b=a=3; 如上的真实赋值过程 => a=1 => a=3 => b=3 => 一般来说,等号是从右向左赋值的 于是问题来了 var a={n:1}; var b=a; a.x=a={n:2}; console.log(a) // {n:2} console.log(b) // {n:1,x:{n:2}} console.log(a.x) // undefined console.log(b.x) // {n:2} a…
一.js整数的操作 使用|0和~~可以将浮点转成整型且效率方面要比同类的parseInt,Math.round 要快,在处理像素及动画位移等效果的时候会很有用.性能比较见此. var foo = (12.4 / 4.13) | 0;//结果为3 var bar = ~~(12.4 / 4.13);//结果为3 还有一个小技巧,就是!!2个叹号,可以讲一个值,快速转化为布尔值.你可以测试一下! var eee="eee"; alert(!!eee) 返回的是true,也就是说任何一个值前…
前面把js作用域和词法分析都说了下,今天把原型链说下,写这个文章费了点时间,因为这个东西有点抽象,想用语言表达出来不是很容易,我想写的文章不是简单的是官方的API的copy,而是对自己的知识探索和总结的过程,以及在这个过程碰到的问题都一一写出来,我想大多数人应该也有这个疑惑,然后带着疑惑去找答案,当你把这个疑惑解决之后,才觉得很有成就感.下面不多说了,开始说说什么是原型链.要想了解原型链,还是要从简单的开始,什么是原型?首先看下代码: function funcA() { this.show =…
一直有想法去写写js方面的东西,我个人是最喜欢js这门语言,喜欢的他的自由和强大,虽然作为脚本语言有很多限制的地方,但也不失为一个好的语言,尤其是在H5出现之后.下面开始说说js的方面的东西,由于自己的能力有现,有点地方说的不明白,还请高手指点.这个文章,如果有时间的话应该会写一个系列,包括js的高级方面的知识,最终希望能够说到js的引擎方面的东西.千里之行,始于足下,下面开始说说最简单的一个东西—js的作用域链,时常也比较容易弄错,也算是自己做一个纪录. 首先看一段代码: function t…
在iframe 页面获取父级页面的 html var obj = window.parent.document.getElementById('modaliframe'); 解决Jquery 的在一个页面的冲突问题 <!-- 引入 jquery 1.8.0 -->     <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.min.js"></s…
向数组结尾添加元素高效方法: var arr = [1,2,3]; arr[arr.length] = 4 头部: var a = [1,2,3]; a.concat(4,5); // 1,2,3,4,5 中间: splice(index,howmany,arr1,arr2,...); //index插入的位置,howmany删除数量,arr1...添加项目 检测对象是否存在属性: hasOwnPrototype :只在本身有此属性时返回 true in :不区分属性来自自身还是继承自原型 严格…
angular-watch.html 代码如下: <script> var app = angular.module('app',[]); app.controller('ctrl',function($scope){ $scope.init = { price : ,//单价 count : , //数量 money : //运费 }; $scope.a = ; $scope.$watch('init.count',function(newVal,oldVal){ console.log(n…
查看zepto源码时,看到它的数组去重写法非常简单.下面是代码 var uq = function(array){ return [].filter.call(array,function(item,idx){ return array.indexOf(item) == idx }) }uq([1,3,5,1,2,5])输出: [1,3,5,2] 这里用到了array filter方法. 下面再简单介绍一下 filter方法的使用. filter() 方法创建一个新数组, 其包含通过所提供函数实…