为了判断一个对象是否包含自定义属性而不是原型链上的属性,我们需要使用继承自 Object.prototype 的 hasOwnProperty方法.hasOwnProperty 是 JavaScript 中唯一一个处理属性但是不查找原型链的函数. // 修改Object.prototype Object.prototype.bar = 1; var foo = {goo: undefined}; foo.bar; 'bar' in foo; // true foo.hasOwnProperty(…
1.hasOwnProperty相关 为了判断一个对象是否包含自定义属性而不是原型链上的属性,我们需要使用继承自 Object.prototype 的 hasOwnProperty方法.hasOwnProperty 是 JavaScript 中唯一一个处理属性但是不查找原型链的函数.   // 修改Object.prototype   Object.prototype.bar = 1;   var foo = {goo: undefined};       foo.bar; // 1   'ba…
1.hasOwnProperty相关 为了判断一个对象是否包含自定义属性而不是原型链上的属性,我们需要使用继承自 Object.prototype 的 hasOwnProperty方法.hasOwnProperty 是 JavaScript 中唯一一个处理属性但是不查找原型链的函数.   // 修改Object.prototype   Object.prototype.bar = 1;   var foo = {goo: undefined};       foo.bar; // 1   'ba…
前言 这是对平时的一些读书笔记和理解进行整理的第二部分,第一部分请前往:JS知识点整理(一).本文包含一些易混淆.遗漏的知识点,也会配上一些例子,也许不是很完整,也许还会有点杂,但也许会有你需要的,后续会持续更新,喜欢就关注一下喽! 三.运算符 3.1运算符 1.易忽略的例子: let obj = { x: 1, y: 2}; "toString" in obj; //true obj继承了toString()方法且in能遍历原型上的不可枚举属性 let arr =[ 3, 6 ,8]…
前言 本文把平时的一些读书笔记和理解进行了整理归纳,包含一些易混淆.遗漏的知识点,也会配上一些例子,可能不是很完整,还会有点杂,但也许会有你需要的(目前先整理了一部分,笔记有点多,后续会持续更新). 一.变量 1.1 变量声明 1.变量是常见的标识符,以字母.$._开头,但是不能包含+ - *等标识符,中文也是合法的标识符,保留字不能作为标识符. 2.函数声明和赋值会分为两个阶段,一个是编译阶段的任务,就是编译器声明变量,另一个是执行阶段的任务,就是js引擎去查询赋值,所以声明都会在代码被执行前…
fabric.js是一个很好用的 canvas 操作插件,下面整理了一些平时项目中用到的知识点: //1: 获得画布上的所有对象: var items = canvas.getObjects(); //2: 设置画布上的某个对象为活动对象. canvas.setActiveObject(items[i]); //3:获得画布上的活动对象 canvas.getActiveObject() //4:取消画布中的所有对象的选中状态. canvas.discardActiveObject(); //5:…
1 原型/原型链 1-1 原型 定义:原型是function对象的一个属性,定义了构造函数制造出的对象的公共祖先.通过该构造函数产生的对象,可以继承该原型的属性和方法. 原型是一个对象. 可以利用原型的特性,提取共有属性. 对象属性与在原型上属性的增删改查. 对象如何查看原型 -> 隐式属性 __proto__ 对象如何查看构造函数 -> constructor 1-2 原型链 原型链的构成(继承方法). 原型链与原型属性的增删改查基本相同. this指向调用该方法的对象. 大多数对象最终继承…
主要还是各地搜刮来的,本人对于这方面的总结还是8彳亍,给各位大佬磕头了砰砰砰 1. 2.JS闭包和匿名对象以及作用域 js在执行之前,会将所有带var和function的进行提前定义和声明.(带var的提前声明,function声明和定义都完成了) 首先,在全局作用域下,进行预解释: test=xxxfff000(开辟一个堆内存,里面存的是代码字符串) var result(声明一个变量result) var  result2(声明一个变量result2) -------------------…
1. indexOf 与String类似,Array也可以通过indexOf()来搜索一个指定的元素的位置: var arr = [10, 20, '30', 'xyz']; arr.indexOf(10); // 元素10的索引为0 arr.indexOf(20); // 元素20的索引为1 arr.indexOf(30); // 元素30没有找到,返回-1 arr.indexOf('30'); // 元素'30'的索引为2 注意了,数字30和字符串'30'是不同的元素. 2. slice s…
vue前端面试题知识点整理 1. 说一下Vue的双向绑定数据的原理 vue 实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty() 来劫持各个属性的 setter,getter,在数据变动时发布消息给订阅者,触发相应监听回调 2. 解释单向数据流和双向数据绑定 单向数据流: 顾名思义,数据流是单向的.数据流动方向可以跟踪,流动单一,追查问题的时候可以更快捷.缺点就是写起来不太方便.要使UI发生变更就必须创建各种 action 来维护…