- 浏览: 330072 次
- 性别:
- 来自: 南京
最新评论
文章列表
javascript参数
- 博客分类:
- javascript
跟java相比javascript是一种很灵活(神经病)的语言
不管一个函数定义时有多少个形参,实际调用时传入多少个参数都是可以的,本质上是在函数运行时,在执行上下文准备阶段初始化形参,在运行阶段将实参赋值给形参,实参不够的形参定义为undefined。而所有的实参又在arguments中保存,可以通过arguments[i]进行调用
underscore源码里面这样写的原因是什么呢?
上网找了一下几乎都是复制粘贴,讲的还有明显错误。在stackoverflow上找到一个觉得比较合理的答案:https://stackoverflow.com/questions/9188998/obj-length-obj-length-in-javascript
(obj.length === +obj.length)效果其实等同于(typeof obj.length == 'number'),(主要是为了区别对象和数组,对象一般没有length属性,属性字符串,方法等有)至于为什么采用看起来没那么直观的前一种表达方法呢,也许是 ...
转自:http://www.yinwang.org/blog-cn/2016/06/08/java-value-type
Java 有值类型吗?
有人看了我之前的文章『Swift 语言的设计错误』,问我:“你说 Java 只有引用类型(reference type),但是根据 Java 的官方文档,Java 也有值类型(value type)和引用类型的区别的。比如 int,boolean 等原始类型就是值类型。” 现在我来解释一下这个问题。
Java 有值类型,原始类型 int,boolean 等是值类型,其实是长久以来的一种误解,它混淆了实现和语义的区别。不要以为 Java 的 ...
jQuery1.11.1源码初步解析
- 博客分类:
- javascript
jQuery是web程序员的必备js库,估计90%以上的web项目都会用到它。今天周末,心血来潮,打算仔细瞧瞧其庐山真面目。记得以前也对其分析过一次,半途而废了,也没有记录下来。呵呵。废话少说,直接开始。高手请绕行,勿喷,有错误请指正。谢谢。 用eclipse打开jquery-1.11.1.js,源代码如下所示:
Java代码
(function( global, factory ) {
if ( typeof module === "object" && typeof module.exports === & ...
深入--闭包
- 博客分类:
- javascript
定义
MDN对闭包的定义为: 闭包是指那些能够访问自由变量的函数
那什么是自有变量呢?自有变量是指在函数中使用的,但既不是函数参数也不是函数的局部变量的变量
由此,我们可以看出闭包共有两部分组成:闭包 = 函数 + 函数能够访问的自由变量
举个例子
var a = 1;
function foo(){
console.log(a);
}
foo();
foo函数可以访问变量a,a对foo来说是自由变量,那么foo就是闭包了。。。
所以在《JavaScript权威指南》中就讲到:从技术的角度讲,所有的JavaScript函数都是闭包。
这怎 ...
深入--执行上下文
- 博客分类:
- javascript
在《深入--词法作用域与动态作用域》中,提出这样一道思考题
var scope = "global scope";
function checkscope(){
var scope = "local scope";
function f(){
return scope;
}
return f();
}
checkscope();
var scope = "global scope";
function checkscope(){
var scope ...
深入--作用域链
- 博客分类:
- javascript
接着《深入--变量对象》讲讲作用域链
作用域链
在《深入--变量对象》中讲到,当查找变量的时候,会先从当前上下文的变量对象中查找,如果没有找到,就会从父级(词法层面的父级)执行上下文的变量对象中查找,一直找到全局上下文的变量对象,也就是全局对象,这样由多个执行上下文的变量对象构成的链表就叫做作用域链
下面,让我们以一个函数的创建和激活两个时期来讲解作用域链式如何创建和变化的
创建函数
函数的作用域在函数定义的时候就决定了
这是因为函数有一个内部属性[[scope]],当函数创建的时候,就会保存所有父变量对象到其中,你可以理解[[scope]]就是所有父 ...
深入--变量对象
- 博客分类:
- javascript
《深入--执行上下文栈》中提到,当javascript执行一堆可执行代码(executable code)时,会创建相应的执行上下文(execution context)
每个执行上下文,都有三个重要属性:
变量对象(Variable Object,VO)
作用域链(Scope Chain)
this
这篇重点讲创建变量对象的过程
变量对象
变量对象是与执行上下文相关的数据作用域,存储了在上下文中定义的变量和函数声明
因为不同执行上下文下的变量对象稍有不同,所以我们来聊聊全局上下文下的变量对象和函数上下文下的变量对象
全局上下文
我们先了解一 ...
深入--执行上下文栈
- 博客分类:
- javascript
顺序执行?
如果要问js代码执行顺序的话,写过js的开发者直观印象,就是顺序执行,比如:
var foo = function () {
console.log('foo1');
}
foo(); // foo1
var foo = function () {
console.log('foo2');
}
foo(); // foo2
但是再看下面这段代 ...
深入--词法作用域和动态作用域
- 博客分类:
- javascript
javascript标题深入开头文章转自:https://github.com/mqyqingfeng/Blog 文章某些部分可能因为理解不同做一些修改
作用域指对某一变量或方法具有访问权限的代码空间,javascript采用词法作用域,也就是静态作用域。js没有块级作用域 ...
继承(原型链)
- 博客分类:
- javascript
javascript中的继承是通过原型链来体现的
function Foo(){};
var f1 = new Foo();
f1.a = 10;
Foo.prototype.a = 100;
Foo.prototype.b = 200;
console.log(f1.a); //10
console.log(f1.b);//200
为什么是这个结果呢?
访问一个对象的属性时,现在基本属性中找,如果没有,再沿着__proto__这条链向上找(对象的__proto__指向创建这个对象的函数的prototype,这个prototype的__proto__指向创建这个 ...
instanceof
- 博客分类:
- javascript
先给出一个例子
function Fn(){};
var fn = new Fn();
console.log(fn instanceof Fn);//true
console.log(fn instanceof Object);//true
看下instanceof运算符的判断规则,
语言规范中对instanceof的定义看起来比较繁琐,不过用js代码来表示就很容易懂了
function instance_of(L, R) {//L 表示左表达式,R 表示右表达式
var O = R.prototype;// 取 R 的显示原型
L = L.__proto_ ...
函数与对象关系
- 博客分类:
- javascript
函数是对象,通过下面代码就能验证
var fn = function(){};
console.log(fn instanceof Object);//true
函数跟对象之间的关系比较复杂
首先:所有对象都是通过函数创建的;有些人可能反驳,不对因为:
var obj = {a:10,b:20};
var arr = [5,'x'];
function fn = {};
但事实上这不过是js的语法糖,他们编译后或者说代码本质是
var obj = new Object();
obj.a = 10;
obj.b = 20;
var arr = new A ...
javascript中对象就是属性的集合,函数也是一种对象。它也是属性的集合
js默认给函数一个属性--prototype。这个函数值是一个对象(属性的集合,再次强调),默认有一个叫constructor的属性,指向这个函数本身。
有一个函数function F(); var f = new F(); 这样f对象就可以调用F.prototype中的属性,因为每一个对象都有一个隐藏属性“__proto__”,这个属性引用了创建这个对象的函数的prototype即:f.__proto__ === F.prototype
这里的“__proto__”就是隐式原型
只要记住一 ...
asn.1详解(1)——转载
- 博客分类:
- 编码
转自:http://wmfbravo.blog.163.com/blog/static/2117582200811116107201/
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." - Albert Einstein
ASN.1应用领域已是 ...