大涛子

Results 99 issues of 大涛子

# Zepto 对象思想与源码分析 ## 原型对象 ### `Array.prototype` **每一个函数,都有一个 prototype 属性**,不管是你自定义的,还是函数内置的。 ```javascript var fn = function() {}; console.log(fn.prototype); // {constructor: ƒ} console.log(fn.prototype.constructor === fn); // true ``` ![image](https://user-images.githubusercontent.com/19526072/53319611-f76d3c00-390d-11e9-8542-313fa56bffab.png) 这里的 `fn.prototype` 打印出一个对象,对象里的...

框架源码

```js /* Zepto v1.1.6 - zepto event ajax form ie - zeptojs.com/license */ var Zepto = (function() { var undefined, key, $, classList, // 获取数组的slice 和 filter(返回数组中的满足回调函数中指定的条件的元素)方法 emptyArray = [],...

框架源码

## call 和 apply 的模拟实现 ### call `call()`在使用一个指定的 this 值和若干个指定的参数值的前提下,调用某个函数或方法。该方法的语法和作用与 apply() 方法类似,只有一个区别,就是 call() 方法接受的是一个参数列表,而 apply() 方法接受的是一个包含多个参数的数组。 使用 call 方法调用函数并且指定上下文的 'this' ```js var value = 1; var obj = { value:...

JavaScript 深入系列

## 从原型到原型链 ### 代码演示 每个函数都有一个 prototype 属性 ```js function Person() {} Person.prototype.name = "Jake"; var person1 = new Person(); var person2 = new Person(); person1.name; // 'Jake' person2.name; // 'Jake'...

JavaScript 深入系列

## 定义 在《JavaScript高级程序设计》第三版 4.1.3,讲到传递参数: > ECMAScript中所有函数的参数都是按值传递的。 什么是按值传递呢? > 也就是说,把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样。 ## 按值传递 ```js var value = 1; function foo(v) { v = 2; console.log(v); //2 } foo(value); console.log(value) // 1 ```...

JavaScript 深入系列

## 前言 对于每个执行上下文,都有三个重要属性: - 变量对象(VO,Variable object) - 作用域链(Scope chain) - this ## 变量对象 变量对象是与执行上下文相关的数据作用域,存储了在上下文中定义的变量和函数声明。 参考资料:[JavaScript深入之变量对象](https://github.com/mqyqingfeng/Blog/issues/5) ## 作用域链 在《JavaScript深入之变量对象》中讲到,当查找变量的时候,会先从当前上下文的变量对象中查找,如果没有找到,就会从父级(词法层面上的父级)执行上下文的变量对象中查找,一直找到全局上下文的变量对象,也就是全局对象。这样由多个执行上下文的变量对象构成的链表就叫做作用域链。 ## this > 在绝大多数情况下,函数的调用方式决定了this的值。this不能在执行期间被赋值,并且在每次函数被调用时this的值也可能会不同。 --- MDN ### 全局环境 无论是否在严格模式下,在全局执行环境中(在任何函数体外部)this 都指向全局对象。 ### 函数(运行内)环境...

JavaScript 深入系列

## 可执行代码 - 全局代码 - 函数代码 - eval 代码 ## 执行上下文栈 JS 引擎创建了执行上下文栈(Execution content stack, ECS)来管理执行上下文。 当执行一个函数的时候,就会创建一个执行上下文,并且压入执行上下文栈,当函数执行完毕的时候,就会将函数的执行上下文从栈中弹出。 参考文章:[JavaScript深入之执行上下文栈](https://github.com/mqyqingfeng/Blog/issues/4)

JavaScript 深入系列

## 作用域 - 程序源代码中定义变量的区域 - 规定了如何查找变量,也就是确定当前执行代码的访问权限 JS 采用的是词法作用域,也就是静态作用域,比如函数的作用域在函数定义的时候就决定了 ```js var scope = "global scope"; function checkscope(){ var scope = "local scope"; function f() { return scope; } return f(); }...

JavaScript 深入系列

## JavaScript深入之从原型到原型链 ### 构造函数创建对象 ```js function Person() {} var person = new Person(); person.name = "Yangtao"; ``` ### prototype - 每一个函数都有一个 prototype 属性,这个属性指向了一个对象 - 这个对象就是调用该构造函数而创建的实例的原型,比如 person1 的原型 ```js Person.prototype.name =...

JavaScript 深入系列