一.赋值(copy)
赋值是将某一个数值或对象赋给某个变量的过程;
- 基本数据类型:赋值,赋值之后两个变量互不影响
基本数据类型:undefined,blooean,string,number,null; 复杂数据类型:object,Symbol ;
- 引用数据类型:赋址,两个变量具有相同的引用,指向同一个对象,相互之间有影响
对引用类型进行赋址操作,两个变量指向同一个对象,改变变量a之后会影响变量b,哪怕改变的只是对象a中的基本类型数据。
let a ={ name:'muyiy', book:{ title: "you don't know js", price:'4s' } } let b = a; console.log(b); a.name = 'change'; a.book.price ='55'; console.log(a,'a'); console.log(b,'b'); 改变了对象a对象b也跟着改变
二.浅拷贝(shallow copy)
- what's shallow copy 创建一个新对象,这个新对象有着原始对象属性值的一份精确拷贝,如果属性是基本类型,拷贝的就是基本类型的值,如果属性是基本类型的值,如果属性是引用类型,拷贝的就是内存地址,所以如果其中一个对象改变了这个地址,就会影响到另一个对象。 如果浅拷贝,改变基本数据类型不会影响拷贝的基本类型;如果是引用类型改变会影响拷贝引用类型的值;因为他们是有着相同的引用地址;
三.vue计算属性;
- computed计算属性
定义一个函数执行;和运用计算属性;两种方式的最终结果确实是完全相同的;然而,不同的是计算属性是基于他们的依赖进行缓存的。只在相关依赖发生改变时他们才会重新求值。这就意味着相关依赖没有发生改变就不会重新求职
复制代码
四绑定类名用在组件上
Vue.component('my-component',{
template:`<p class ="foo bar">hi</p>`
})
复制代码
- 然后添加在使用他的时候添加一些class:
<my-component class="baz boo"></my-component>
复制代码
- HTML将被选人为:
<p class="foo bar baz boo">hi</p>
复制代码
五绑定内联样式
- v-bind:style 的对象语法十分直观--看着非常像css,但其实是一个javascript对象。css属性名可以用驼峰式(camelCase)或横线分隔(kabab-case,记得用单引号括起来)
<div v-bind:style="{color:activeColor,fontSize:fontSize + 'px'}"></div>
复制代码
事件修饰符
.stop ,.prevent,.capture,.self,.once,.passive
复制代码
<a v-on:click.stop="doThis"></a>
<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>
<!-- 修饰符可以串联 -->
<a v-on:click.stop.prevent="doThat"></a>
<!-- 只有修饰符 -->
<form v-on:submit.prevent></form>
<!-- 添加事件监听时使用事件捕获模式 -->
<!-- 即元素自身触发的事件先在此处理,然后才交由内部元素进行处理 -->
<div v-on:click.capture="dothis">.....</div>
<!-- 只当在 event.target 是当前元素自身时触发处理函数 -->
<!-- 即事件不是从内部元素触发的 -->
<div v-on:click.self="dothat"></div>
复制代码
函数的length属性
- 指定了默认值以后,函数的length属性,将返回没有指定默认值的参数个数,也就是说,指定了默认值后,length属性将失真。
- 严格模式 es5开始,函数内部可以设定为严格模式。
function doSomething(){
'use strict';
}
复制代码