一、构造器

1、vue.js就是一个构造器,通过构造器Vue来实例化一个对象;例如:var vm = new Vue({});

2、实例化Vue时,需要传入一个参数(选项对象);

3、参数:选项对象可以包含,数据(data)、挂载元素(el)、方法(methods)、模版(template)、生命周期函数等等;

4、扩展构造器Vue,从而用预定义选项创建可复用的组件构造器,所有组件都是被扩展的Vue的实例,使用Vue.extend({})来扩展;

  注意:尽管可以命令式地创建扩展实例,不过在多数情况下建议将组件构造器注册为一个自定义元素,然后声明式地用在模板中。

二、属性与方法

1、每个Vue的实例都会代理其data对象里的所有属性,被代理的属性是响应的;

2、如果实例创建之后添加新的属性到实例上,不会触发视图更新;

3、不要在实例属性或者回调函数中(如 vm.$watch('a', newVal => this.myMethod()))使用箭头函数。因为箭头函数绑定父上下文,所以 this 不会像预想的一样是 Vue 实例,而是 this.myMethod 未被定义。

4、Vue实例暴露了一些有用的实例属性和方法,带有前缀 $ ,便于与代理的data区分

  a、vm.$el:类型(HTMLElement)挂载元素,Vue实例的DOM根元素;

var vm = new Vue({
el: "#app",
data: {
a: 'hello',
b: 'hi'
}
});
console.log(vm.$el === document.getElementById('app')); // true

  b、vm.$data:类型(Object),Vue实例观察的数据对象

var data = { a: 'hello', b: 'hi' }
var vm = new Vue({
el: "#app",
data: data
});
console.log(vm.$data === data); // true
console.log(vm.$data.a); // 'hello'
console.log(vm.$data.b); // 'hi'

  c、vm.$props:类型(Object),不清楚怎么用,哭哭哭。。。求指教。。。

<div id="app">
<child :bmsg="bmsg"></child>
<child bmsg="hi"></child>
</div>
<script type="text/javascript">
var vc = Vue.component('child',{
props:['bmsg'],
template: '<h1>{{bmsg}}</h1>'
})
var vm = new Vue({
el: "#app",
data: {
bmsg: 'hello'
}
});
console.log(vc.$props); //undefined
console.log(vm.$props); //undefined

  d、vm.$options:类型(Object),用于当前Vue实例的初始化选项,在选项中需要包含自定义属性的时候很有用。

var vm = new Vue({
el: '#app',
customOption: 'foo',
created: function () {
console.log(this.$options.customOption) // 'foo'
}
});
console.log(vm.$options); // Object {components: Object, directives: Object, filters: Object, el: "#app", customOption: "foo"…}
console.log(vm.$options.customOption); // 'foo'
console.log(vm.$options.el); // '#app'

  e、vm.$parent:类型(Vue实例),父实例。

  f、vm.$root:类型(Vue实例),当前组件树的根Vue实例,如果没有父实例,就是实例本身。

  h、vm.$children:类型(Array(Vue实例)),当前实例的直接子组件

    需要注意 $children 并不保证顺序,也不是响应式的。如果你发现自己正在尝试使用 $children 来进行数据绑定,考虑使用一个数组配合 v-for 来生成子组件,并且使用 Array 作为真正的来源。

  i、vm.$slots:类型({ [name: string]: ?Array<VNode> }),用来访问被 slot 分发的内容。每个具名 slot 有其相应的属性(例如:slot="foo" 中的内容将会在 vm.$slots.foo 中被找到)。default 属性包括了所有没有被包含在具名 slot 中的节点。

  j、vm.$scopedSlots:;

  k、vm.$refs:类型(Object),一个对象,其中包含了所有拥有 ref 注册的子组件;

  l、vm.$isServer:类型(boolean),当前Vue实例是否运行于服务器;

vue构造器以及实例属性的更多相关文章

  1. vue四、实例

    1.new Vue创建根实例 2.data对象,所有的属性加入到 Vue 响应式系统-值发生改变时,视图自动变更为新值 只有实例被创建时存在的属性才会响应式改变,后增加的不会 vue定义的实例属性和方 ...

  2. Vue基础二之全局API、实例属性和全局配置,以及组件进阶(mixins)的详细教程(案列实现,详细图解,附源码)

    本篇文章主要是写Vue.directive().Vue.use()等常用全局API的使用,vm.$props.vm.$options.vm.$slots等实例属性的使用,以及Vue全局配置.组件的mi ...

  3. vue实例属性(vm.$els)

    不需要表达式 参数: id(必需) 用法: 为 DOM 元素注册一个索引,方便通过所属实例的 $els 访问这个元素. 注意: 因为 HTML 不区分大小写,camelCase 名字比如 v-el:s ...

  4. Vue基础进阶 之 常用的实例属性

    Vue实例属性: vue实例直接调用的属性: 常用的实例属性: vm.$data:获取属性: vm.$el:获取实例挂载的元素: vm.$options:获取自定义选项/属性: vm.$refs:获取 ...

  5. Vue 组件实例属性的使用

    前言 因为最近面试了二.三十个人,发现大部分都还是只是停留在 Vue 文档的教程.有部分连教程这部分的文档也没看全.所以稍微写一点,让新上手的 Vuer 多了解 Vue 文档的其他更需要关注的点. 因 ...

  6. 简述Vue的实例属性、实例方法

    1.实例属性 组件树访问 $parent -----> 用来访问当前组件实例的父实例: $root -----> 用来访问当前组件树的根实例,如果当前组件没有父实例,则$root表示当前组 ...

  7. Vue实例属性/方法/生命周期

    一 实例属性 var app = new Vue(); app.$el ===>返回当前挂在DOM对象. app.$data ===>返回当前实例data里面的数据 app.$option ...

  8. vue自带的实例属性和方法($打头)

    Vue 实例内置了一些有用的实例属性与方法.它们都有前缀 $,以便与用户定义的属性区分开来.例如: var data = { a: 1 } var vm = new Vue({ el: '#examp ...

  9. vue学习笔记 实例(二)

    var data = {a: 1} var vm = new Vue({ el: '#example', data: data, created: function () { // `this` 指向 ...

随机推荐

  1. ## 20155336 2016-2017-2《JAVA程序设计》第八周学习总结

    20155336 2016-2017-2<JAVA程序设计>第八周学习总结 教材学习内容总结 第14章 NIO与NIO2 NIO简介 NIO使用频道来衔接数据结点,在处理数据时,NIO可以 ...

  2. 国际时区 TimeZone ID列表

    public static void main(String[] args) { Calendar c = new GregorianCalendar(); c.setTime(new Date()) ...

  3. linux下文件打包、压缩详解

    Linux平台下,有如下几种常见的压缩工具: ========================================================================= 工 具 ...

  4. BFC开启条件

    当元素CSS属性设置了下列之一时,即可创建一个BFC: float:left|right position:absolute|fixed display: table-cell|table-capti ...

  5. Ubuntu 16.04.2 LTS 安装 jdk1.6 和 tomcat6 (二)

    上一篇记录和分享了jdk1.6 在Ubuntu 16.04.2 环境下的安装配置,本文开始安装和配置tomcat 6     2 安装tomcat   http://tomcat.apache.org ...

  6. selenium + PhantomJS 爬取js页面

    from selenium import webdriver import time _url="http://xxxxxxxx.com" driver = webdriver.P ...

  7. SQL集合运算

    注:UserInfo一共29条记录 select * from UserInfo union --并集(29条记录)(相同的只出现一次) select * from UserInfo select * ...

  8. .Net Core使用HttpClient请求Web API注意事项

    HttpClient 使用HttpClient可以很方便的请求Web API,但在使用时有一些需要注意的地方,不然会给你的程序带来毁灭性的问题. HttpClient是一个继承了IDisposable ...

  9. 知识记录——CSS规范(文章内容为转载)

    原作者信息 作者:词晖 链接:http://www.zhihu.com/question/19586885/answer/48933504 来源:知乎 著作权归原作者所有,转载请联系原作者获得授权. ...

  10. RxJava / RxAndroid

    RxJava 是什么 RxJava 是函数响应式编程框架,它用观察者设计模式. 常用来做异步数据处理,在安卓中用来代替传统的 AsyncTask + Handler 的组合结构. RxJava 架构简 ...