17/6/18随笔

一、今天继续了解Vue.js模板语法、计算属性、列表渲染、表单空间绑定等一些基础功能。Vue有些反面用起来很爽,比如this肯定是Vue的实例,不用再想JS活着Jquery去考虑上下文环境,默认绑定this、隐式绑定this、显式绑定this或者new绑定。还有v-model双向绑定表单、组件Component的的一些用法。同时也感觉很迷茫,毕竟没有实际用过Vue.js开发过,不知道知识点孰轻孰重,纯粹是在按葫芦画瓢,思绪混乱。

二、今天学习了一种原型机成的方法:

function Foo(){
  this.color = [‘red‘,‘blue‘,‘green‘];
}

function Boo(){
  this.color = [];
}

Boo.prototype = new Foo();//把Foo的实例赋值给Boo的原型对象,也就是说Foo的实例对象就是Boo的原型对象,同时Boo继承了Foo的属性以及方法
var b = new Boo();
var b1 = new Boo();
b.__proto__.color.push(‘yellow‘);
console.log(b1.color.toString());//red,blue,green,yellow

三、复习你不知道的JavaScript关于this的绑定问题:

在理解this的绑定过程之前,首先要理解调用位置:调用位置就是函数在代码中被调用的位置(而不是声明的位置)。最重要的是要分析调用栈(就是为了到达当前执行位置所调用的所有函数)。

function baz(){
  //当前调用栈是baz,因此当前调用位置是全局作用域
  console.log("baz");
  bar();//bar的调用位置
}

function bar(){
  //当前调用栈是baz  -->  bar,因此当前调用位置是在baz中
  console.log("bar");
  foo();//foo的调用位置
}

function foo(){
  //当前调用栈是baz  -->  bar  -->  foo,因此当前调用位置在bar
  console.log("foo");
}

baz();//baz的调用位置

1、默认绑定

function foo(){
  console.log(this.a);//应用了this的默认绑定,因此this指向全局变量
}
var a = 2;
foo();//2,foo调用位置

2、隐式绑定

function foo(){
  console.log(this.a);
}

var obj = {
  a:2,
  foo:foo
};

obj.foo();//2

//--------------------------------
function foo(){
  console.log(this.a);
}

var obj2 = {
  a:42,
  foo:foo
};

var obj1 = {
  a:2,
  obj2:obj2
};
obj1.obj2.foo();//42,对象属性引用链中只有上一层或者最后一层在调用位置中起作用

隐式丢失:

function foo(){
  console.log(this.a);
}

var obj = {
  a:2,
  foo:foo
};

var baz = obj.foo;//函数别名,会造成隐式绑定丢失,从而应用默认绑定
var a = 1;
baz();//1

//----------------------------------------------------------------------
function foo(){
  console.log(this.a);
}

function doFoo(fn){
  fn();
}

var obj = {
  a:2,
  foo:foo
};
var a = 1;
doFoo(obj.foo);//1

3、显示绑定

function foo(){
  console.log(this.a);
}

var obj = {
  a:2
};

foo.call(obj);//2,通过apply和call方法将foo绑定到obj中,强制把foo的this绑定到obj上

硬绑定和ES5总的bind绑定(后面添加)

4、new绑定

function Foo(a){
  this.a = a;
}

var f = new Foo(2);
console.log(this.a);

优先级:

a.函数是否调用new 绑定,如果是的话this绑定为新创建的对象;

b.函数是否通过apply、call、或者硬绑定调用,如果是this绑定之sing对象;

c.函数是否在上下文环境调用,如果是this绑定上下文对象;

d.如果都不是就是默认绑定;

时间: 2024-12-17 07:38:14

17/6/18随笔的相关文章

《TCP/IP详解卷1:协议》第17、18章 TCP:传输控制协议(2)-读书笔记

章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(1)-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(2)-读书笔记 <TCP/IP详解卷1:协议>第4章 ARP:地址解析协议-读书笔记 <TCP/IP详解卷1:协议>第5章 RARP:逆地址解析协议-读书笔记 <TCP/IP详解卷1:协

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 扩展 iptables应用在一个网段 http://www.aminglinux.com/bbs/thread-177-1-1.html sant,dnat,masquerade http://www.aminglinux.com/bbs/thread-7255-1-1.html iptables限制syn速率 http://www.aminglinux.com/bbs/thre

《TCP/IP详解卷1:协议》第17、18章 TCP:传输控制协议(1)-读书笔记

章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(1)-读书笔记 <TCP/IP详解卷1:协议>第3章 IP:网际协议(2)-读书笔记 <TCP/IP详解卷1:协议>第4章 ARP:地址解析协议-读书笔记 <TCP/IP详解卷1:协议>第5章 RARP:逆地址解析协议-读书笔记 <TCP/IP详解卷1:协

SICP 1.16 1.17 1.18

解: 公共过程 (define (even? n)   (= (remainder n 2) 0)) (define (double n)   (+ n n)) (define (halve n)   (/ n 2)) 1.16: (define (expt b n)   (define (iter b n a)     (cond ((= n 0) a)           ((even? n) (iter (* b b) (/ n 2) a))           (else (iter b

NOIP模拟 17.8.18

NOIP模拟17.8.18 A.小菜一碟的背包[题目描述]Blice和阿强巴是好朋友但萌萌哒Blice不擅长数学,所以阿强巴给了她一些奶牛做练习阿强巴有 n头奶牛,每头奶牛每天可以产一定量的奶,同时也需要一定量的草作为饲料对于第 i头奶牛来说,它每天可以产 vi升的奶,同时需要 wi千克的草作为饲料现在来自蚯蚓国的九条可怜想借一些奶牛,使借走的这些奶牛每天的总产奶量最大,但九条可怜很穷,每天最多只能提供W千克的草作为饲料,而且她还需要对付跳蚤国的神刀手,所以她把这个问题交给了阿强巴,不不不……阿

10.15 iptables filter表案例 10.16/10.17/10.18 iptable

七周四次课 10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 打开端口转发, 调整内核参数 增加一条规则 所添加的规则 B机器设置默认网关 设置公共DNS C设备与A通信,通过端口转换的形式,将原有iptables清空 上面为进来的包进行转换,下面为出去的包进行转换 原文地址:http://blog.51cto.

6.18随笔

一.节点 节点是文件中有效而完整的结构的最小单元.内含标示组的节点,加上必要属性.属性值及内容,便可构成一个元素.节点的标志符<>. 二.DOM和BOM javascript 有三部分构成,ECMAScript,DOM和BOM,根据宿主(浏览器)的不同,具体的表现形式也不尽相同,ie和其他的浏览器风格迥异. 1. DOM 是 W3C 的标准: [所有浏览器公共遵守的标准] 2. BOM 是 各个浏览器厂商根据 DOM 在各自浏览器上的实现;[表现为不同浏览器定义有差别,实现方式不同] 3. w

回顾17.展望18

万事开头难,弱者往往死于征途. 几乎每一只猴子都是用"hello world"敲开的代码大门,我也不例外.从高中到大学,阴差阳错的进了计软院,阴差阳错的敲了第一句"hello world",远远没有体会到计算机初次问世时科学家第一次敲下命令的快乐. 回顾自己一年多的大学生活,本领不多,感慨不少.大一懵懵懂懂,一味跟着老师走,C之后紧跟着C++,学是学了,书也看了,但要让我写个程序,特别是带点交互的那种,抱歉,不会.也不知道是不是自己过于心焦,总觉得学校教的东西能用的

9.14-9.18随笔之一(CSS扩展技术:LESS SASS)

less css是一种动态样式语言,属于CSS预处理语言的一种,它使用类似CSS的语法,为CSS的赋予了动态语言的特性;SASS是对CSS3(层叠样式表)的语法的一种扩充,它可以使用巢状.混入.选择子继承等功能,可以更有效有弹性的写出Stylesheet. less是一种语法,使用需要编译器将其编为CSS才能使用,通过less 我们可以在编写css时设置变量(@变量名).运用继承.嵌套等,更方便CSS的编写和维护,我最为喜欢的便是这两种技术中可嵌套的编写方法,对于初学者来说尤为实用,在less中