vanlee

Results 62 issues of vanlee

```js const Child = { template: '', data () { return { childData: this.parentData } }, props: ['parentData'], created () { // 这里将输出 parent console.log(this.childData) } } var vm =...

```js if (!isPlainObject(data)) { data = {}; process.env.NODE_ENV !== "production" && warn( "data functions should return an object:\n" + "https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function", vm ); } ```

一个组件的 data 选项必须是一个函数,因此每个实例可以维护一份被返回对象的独立的拷贝 这是因为,通过函数返回数据对象,保证了每个组件实例都有一个唯一的数据副本,避免了组件间数据互相影响。后面讲到 Vue 的初始化的时候大家会看到,在初始化数据状态的时候,就是通过执行 strats.data 函数来获取数据并对其进行处理的。 ### 源码 ```js strats.data = function ( parentVal: any, childVal: any, vm?: Component ): ?Function { if (!vm) { if (childVal &&...

--- title: 手写实现数组扁平化 --- # 请实现一个 flattenDeep 函数,把嵌套的数组扁平化 1. 怎样用最普通的方法解决数组扁平化问题 2. ES6 里面是否有一些高级的方法能够直接实现 ```js // 把多维嵌套的数组拍平 var arr = [1, [2, [3, 4,5]]]; console.log(flatten(arr)); // [1, 2, 3, 4,5] ```...

```js const isObj = Object.prototype.toString({}) const isObj1 = Object.prototype.toString.call({}) // 其他类型需要调用call [object Xxx] const isNum = Object.prototype.toString.call(1) const isStr = Object.prototype.toString.call('1') const isBo = Object.prototype.toString.call(true) const isFun = Object.prototype.toString.call(function(){}) const...

手写`instanceof` 实现的原理 ```js function myInstanceof(left,right){ // 首先判断基本数据类型 if(typeof left!=='object' || left === null) return false // getProtypeOf是Object对象自带的api 获取参数的原型对象 let proto = Object.getPrototypeOf(left) while(true){ if(proto===null)return false if(proto === right.prototype) return true...

也就是说怎么判断一个`JavaScript` 元素是个数组,这也是面试常问的问题。 但是数组是基于对象的,不构成单独的语言类型 ### `instanceof操作符` ```js if (value instanceof Array) { // 操作数组 } ``` > 缺点 使用 instanceof 的问题是假定只有一个全局执行上下文。如果网页里有多个框架,则可能涉及两个不同的全局执行上下文,因此就会有两个不同版本的 Array 构造函数。如果要把数组从一个框架传给另一个框架,则这个数组的构造函数将有别于在第二个框架内本地创建的数组。 ### `Array.isArray` ```js console.log(typeof []) // object console.log(typeof...