js 杂谈
js解释器有自己的内存管理机制(垃圾回收:自动回收无引用指向对象)
js采用一种数字类型(64位浮点数),100与1e2完全相等
条件判断是被当为假的值:false、null、undefined、‘’、0、NaN
Infinity 属性用于存放表示正无穷大的数值。-Infinity 属性用于存放表示负无穷大的数值
数字、字符串、布尔值不可变,不是对象,对象是可变的键控集合(如:数组、函数、正则表达式、对象)。
NaN!==NaN (不等于自己的数)
isNaN() (NaN或者非数字如对象,返回true)
isFinite() (不是NaN Infinity -Infinity 时返回 true)
0===-0 1/0!==1/-0 (正负无穷不等)
if(undefined){} if语句将undefined转换为false, ‘==’ 运算符从不试图将其操作数转换为布尔值
String(false) 'false'
除null、undefined,都有toString()方法
+运算符的一个操作数是字符串,会把另外一个操作数转换为字符串 x+‘’ == String(x)
一元+将操作数转换为数字 +x == Number() == x-0
一元!将操作数转换为布尔值并取反 !!x == Boolean(x)
var n=17 ; n.toString(2) // ' 10001'
Number类 var n=12.78; n.toFixed(0) 13
Number()只能基于十进制转换,且str不能出现非法的尾随字符
parseInt()、parseFloat()是全局函数,不从属于任何类的方法,更加灵活
所有对象转到原始布尔值时均为true new Boolean(false) 是对象,为true
var i=1,j=++i; // 2 2
var i=1,j=i++; // 2 1
'one' <3 // false(其中一个操作数是NaN ,比较操作符总数返回false)
0==-0 0===-0 true
11<3
'11'>3 (任意一个不是字符串,比较)
'11'<'3' (两个都是字符串时,字符串比较)
&& ‘短路’(即:只有当左侧表达式运算为true时才开始计算第二个表达式)
if(a==b) stop() (a==b) && stop() (只有当a==b为真时执行stop)
三元运算符
x>0?x:-x;
str='name'+(username?username:'hello');
(typeof val=='string') ? "'"+val+"'":val
typeof 区分对象与原始值
instanceof \class\constructor 区分对象的类
原始类型 属性调用解释、存储机制 (容错处理)
var str='123'
str.length 3 // new String(123) new String(123).length
str.a='a' str.a - undefined // new String(123) new String(123).a='a' delete new String(123).a str.a new String(123).a undefined
var a=0; a = (a++) + (++a) - (a++) - (a++); // -3 0/1 + 2/2 - 2/3 -3/4
换为字符串
'' + 10 === '10'; // true
转换为数字
+'10' === 10; // true
Number('010') === 10
parseInt('010', 10) === 10 // 用来转换为整数
转换为布尔型
!!'foo'; // true
js注释优选行注释 // (/* */ 块注释与正则表达式冲突)
一种面向对象语言需要向开发者提供四种基本能力:
封装 - 把相关的信息(无论数据或方法)存储在对象中的能力 (。dll、class-class)
聚集 - 把一个对象存储在另一个对象内的能力
继承 - 由另一个类(或多个类)得来类的属性和方法的能力
多态 - 编写能以多种方法运行的函数或方法的能力 (龙生九子各不相同)
<script src="js/require.js" defer async="true" ></script>
异步加载
js库细则
1.不要使用版本检测,而要使用能力检测
2.使用命名空间
3.()在JavaScript中有两种含义:一是运算符;二是分隔符。
js中对象是可变的键控集合,除了number string Boolean null undefined,其他都是对象。
js中,每个对象都连接到一个原型对象,并且从中继承属性,
所有通过对象字面量创建的对象都连接到 Object.prototype 这个标准的js对象。
(函数对象连接到 Function.prototype ,该原型本身又连接到 Object.prototype ,
同时,每个函数在创建时附有两个隐藏属性:函数上下文,实现函数行为的代码
)
原型连接在更新时不起作用,对某个对象做出改变不会触及原型
原型连接在检索时: 对象本身属性 - Object.prototype ,这一过程就是委托。
原型关系是动态关系,添加属性到原型,所有基于此原型的对象即时拥有此属性。
hasOwnProperty方法不检查原型链
fight.hasOwnPreperty("number") //true
fight.hasOwnPreperty('constructor') //false
var obj = {
"name":"wj",
"age":27
};
for( ele in obj ){
if (obj.hasOwnProperty(ele)) {
console.log(ele,obj[ele]);
};
};
delete 可删除对象属性,不会触及原型链中对象及其属性
(删除对象属性可以让来自原型链中属性浮现出来)
函数 包含一组语句 是js基础模块单元
用于代码复用、信息隐藏、组合调用(指定对象行为)
编程,就是将一组需求分解成一组函数与数据结构的技能。
通过函数字面量创建的函数对象包含一个连接到外部上下文的链接,这就是闭包。
调用运算符 是 函数表达式后的一对圆括号
js 杂谈的更多相关文章
- Js杂谈-DOM
前言 对jQuery的依赖.导致js的原生方法的淡忘,如果是封装自己的库,那势必要用到js的许多原生方法.从Jquery强大的dom处理开始,我们开始回顾javascript那些古老而坚挺的DOM方法 ...
- Js杂谈-插件包读后感
最近有幸得到了一份项目上的前端封装的插件库代码,花了一个下午时间,仔细地研读了一下.对于我很想做自己的类库,搞自己的组件包很有启蒙意义. 相比较我之前阅过的框架或是类库,这份比较简单. 项目是jQue ...
- Js杂谈-正则的测试与回溯次数
例子来源于<精通正则表达式(第三版)>这本书,我贴出来: 这里的NFA是正则的一种引擎,书中介绍了一共三种引擎:NFA,DFA和POSIX NFA.像一般我们常用的.NET,java.ut ...
- Js杂谈-单体模式
单体模式的思想:保证一个特定类仅有一个实例,意味着第二次使用同一个类创建新对象的时候,应该得到与第一次所创建对象完全相同的对象. 下面举几个实现的例子 1.new操作符 这种思想在于当使用同一个构造函 ...
- 2014 Hangjs 见闻流水账第二天
前言 第一天传送门: 2014 Hangjs 见闻流水账第一天 写作风格跟第一天还是一样的. Slide 每个slide我都会根据自己的理解重新命名一次,用于表达自己的第一看法,主观意见,不喜可吐槽, ...
- iframe自适应高度(转)
iframe自适应高度 (2013-04-23 17:29:49) 标签: iframe 高度 自适应 js 杂谈 分类: 网页制作 有时候我们的网站需要引入其他网站的东西,比如评论,这时候就需要使用 ...
- Esri的开源JS项目杂谈
一提到Esri大家首先想到的是庞大的ArcGIS产品大家族,其产品包含从桌面端,到服务器/云端,再到web/移动端.作为一名极客,不聊开源逼格似乎上不去啊.其实,Esri作为一个开放的平台,不仅有稳定 ...
- JS,JQuery杂谈
JS返回页面: JS返回前一个页面,经常看到有人用window.history.go(-1)这种方法 这种放的确可以返回,也仅仅只是返回,返回的页面信息却没有刷新.也有人用windows.histo ...
- <经验杂谈>介绍Js简单的递归排列组合
最近在开发SKU模块的时候,遇到这样一个需求,某种商品有N(用未知数N来表示是因为规格的数组由用户制定且随时可以编辑的,所以对程序来说,它是一个未知数)类规格,每一类规格又有M个规格值,各种规格值的组 ...
随机推荐
- iOS - 获取状态栏和导航栏尺寸(宽度和高度)
iPhone开发当中,有时需要获取状态栏和导航栏高度.宽度信息,方便布局其他控件.下面介绍一下如何获取这些信息: // 状态栏(statusbar) CGRect rectStatus = [[UIA ...
- angularJS中的MVC思想?
mvc 思想: 将应用程序的组成,划分为三个部分:model , controller 和 view ; - 控制器的作用是用来初始化模型用的: - 模型就是用于存储数据的: - 视图是展示数据的: ...
- java使用poi解析或处理excel的时候,如何防止数字变成科学计数法的形式和其他常见Excel中数据转换问题
当使用POI处理excel的时候,遇到了比较长的数字,虽然excel里面设置该单元格是文本类型的,但是POI的cell的类型就会变成数字类型. 而且无论数字是否小数,使用cell.getNumberi ...
- php安装xmlwriter遇到报错及解决方法
Q1:make的时候报' error: 'zend_class_entry' has no member named 'default_properties''错误, A:把 错误行C文件中defau ...
- Python爬虫基础(二)urllib2库的get与post方法
urllib2默认只支持HTTP/HTTPS的GET和POST方法 一.Get方式 GET请求一般用于我们向服务器获取数据,比如说,我们用百度搜索,在百度搜索框中搜索“秦时明月”,拿到地址栏里有效ur ...
- mrbs - 初识
一.mrbs mrbs:(meeting room booking system)会议室预订系统 二.效果 三.models from django.db import models # Create ...
- installEventFilter可以安装到任何QObject的子类,并不仅仅是UI组件。事件过滤器和安装过滤器的组件必须在同一线程,在它们分属在不同线程时,事件过滤器也是不起作用的
Qt的事件知识点: ①事件对象创建完毕后,Qt 将这个事件对象传递给 QObject 的 event() 函数.event() 函数并不直接处理事件,而是将这些事件对象按照它们不同的类型,分发给不同的 ...
- Rochambeau---poj2912||zoj2751(并查集类似于食物链)
题目链接:http://poj.org/problem?id=2912 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1751 ...
- APM最佳实践: 诊断平安城市视频网性能问题
前言: 平安城市已经是一个关系你我他的民生工程,但由于本身系统的复杂性,给运维工作带来了极大的挑战.如何保障摄像头在线率?如何在系统中找到视频系统故障的问题所在?在我们某一次项目经历中,APM在发现问 ...
- ROS 命令学习记录
#catkin_init_workspace //just get CMakeList.txt #catkin_make //增加了信文件夹 build和devel #Catkin_creat_pk ...