搞懂了Vue对象与实例的区别!

简介: 搞懂了Vue对象与实例的区别!

很多人把Vue对象和Vue实例混为一谈,但它们还是有区别的

Vue构造函数就像一台智能手机的设计图纸,定义了这款手机的总体结构和组件。而每部依照设计图组装出来的真实手机,就是Vue实例。

设计图上注明了屏幕尺寸、CPU型号等静态信息,对应Vue对象的静态属性;设计图也列出了手机需要具备的功能,例如拍照、打电话,对应Vue对象的静态方法。

而实际生产的每部手机,都可以获取到这些设计信息,也继承了手机需要的各种功能,这是Vue实例获得的静态属性和方法。

另外,每部手机还拥有独特的IMEI码、使用次数等动态信息,以及拨号、安装APP等实例方法。这对应Vue实例特有的实例属性和方法。

为了区分静态信息和实例信息,智能手机会在实例信息前加上特殊标志,如在手机IMEI码前加“#”。Vue同样使用“$”标记实例方法。

所以明确Vue对象与实例的区别,就像理解设计图与实际产品的关系,这可以让我们更准确地使用Vue开发应用。

// Vue 构造函数
const Vue = {} 
// 实例对象 
const vm = {}
// 在 Vue 对象上定义静态方法
Vue.print = function() {
  console.log('hello')
} 
// 在实例上定义实例方法
vm.print = function() {
  console.log('world')
}
// 调用静态方法 
Vue.print() // hello
// 调用实例方法
vm.print() // world

在这个简单示例中:

  • Vue 对象就是一个普通的对象,我们在上面定义了一个静态方法 print
  • vm 对象代表 Vue 实例,在上面定义了一个实例方法 print
  • 通过 Vue 和 vm 分别调用它们自己的 print 方法

所以区别在于:

  • 静态方法定义在 Vue 构造函数对象上
  • 实例方法定义在 Vue 实例对象上,另外注意带$的不一定都是实例方法哈

准确地说,在 Vue 中:

  • 实例方法是定义在 Vue.prototype 上的方法,可以通过实例访问;
  • 静态方法是定义在 Vue 构造函数上的方法,可以通过 Vue 直接访问。

Vue实例方法

定义在Vue.prototype上,通过Vue实例的this访问:

// 定义
Vue.prototype.$hello = () => console.log('hello')
// 调用 
const vm = new Vue()
vm.$hello() // hello

Vue静态方法

定义在Vue构造函数上,直接通过Vue访问:

// 定义
Vue.install = () => {
  // ...
}
// 调用
Vue.install()

带$的Vue静态方法

一些全局API方法带$,但也是定义在Vue上,通过Vue直接调用:

Vue.$nextTick(() => {
  // ...
})

它们的调用方式和作用域不同,但可以实现同名同功能的方法,这展示了 Vue 对象和实例的区别。

实例方法在原型prototype上,需要通过实例访问;静态方法在Vue构造函数上,可以直接调用。

$的意义很广,主要代表Vue特权方法

这样简单概念的说明是否可以帮助您理解它们之间的区别?如果还有什么不清楚的,随时欢迎交流哈

相关文章
|
7天前
|
JavaScript 前端开发
如何在 Vue 项目中配置 Tree Shaking?
通过以上针对 Webpack 或 Rollup 的配置方法,就可以在 Vue 项目中有效地启用 Tree Shaking,从而优化项目的打包体积,提高项目的性能和加载速度。在实际配置过程中,需要根据项目的具体情况和需求,对配置进行适当的调整和优化。
|
7天前
|
存储 缓存 JavaScript
如何在大型 Vue 应用中有效地管理计算属性和侦听器
在大型 Vue 应用中,合理管理计算属性和侦听器是优化性能和维护性的关键。本文介绍了如何通过模块化、状态管理和避免冗余计算等方法,有效提升应用的响应性和可维护性。
|
6天前
|
JavaScript 前端开发 UED
vue学习第二章
欢迎来到我的博客!我是一名自学了2年半前端的大一学生,熟悉JavaScript与Vue,目前正在向全栈方向发展。如果你从我的博客中有所收获,欢迎关注我,我将持续更新更多优质文章。你的支持是我最大的动力!🎉🎉🎉
|
6天前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。自学前端2年半,熟悉JavaScript与Vue,正向全栈方向发展。博客内容涵盖Vue基础、列表展示及计数器案例等,希望能对你有所帮助。关注我,持续更新中!🎉🎉🎉
|
21天前
|
数据采集 监控 JavaScript
在 Vue 项目中使用预渲染技术
【10月更文挑战第23天】在 Vue 项目中使用预渲染技术是提升 SEO 效果的有效途径之一。通过选择合适的预渲染工具,正确配置和运行预渲染操作,结合其他 SEO 策略,可以实现更好的搜索引擎优化效果。同时,需要不断地监控和优化预渲染效果,以适应不断变化的搜索引擎环境和用户需求。
|
7天前
|
存储 缓存 JavaScript
在 Vue 中使用 computed 和 watch 时,性能问题探讨
本文探讨了在 Vue.js 中使用 computed 计算属性和 watch 监听器时可能遇到的性能问题,并提供了优化建议,帮助开发者提高应用性能。
|
7天前
|
存储 缓存 JavaScript
Vue 中 computed 和 watch 的差异
Vue 中的 `computed` 和 `watch` 都用于处理数据变化,但使用场景不同。`computed` 用于计算属性,依赖于其他数据自动更新;`watch` 用于监听数据变化,执行异步或复杂操作。
|
8天前
|
存储 JavaScript 开发者
Vue 组件间通信的最佳实践
本文总结了 Vue.js 中组件间通信的多种方法,包括 props、事件、Vuex 状态管理等,帮助开发者选择最适合项目需求的通信方式,提高开发效率和代码可维护性。
|
8天前
|
存储 JavaScript
Vue 组件间如何通信
Vue组件间通信是指在Vue应用中,不同组件之间传递数据和事件的方法。常用的方式有:props、自定义事件、$emit、$attrs、$refs、provide/inject、Vuex等。掌握这些方法可以实现父子组件、兄弟组件及跨级组件间的高效通信。
|
13天前
|
JavaScript
Vue基础知识总结 4:vue组件化开发
Vue基础知识总结 4:vue组件化开发