一直以来,不少新手都会常常问,我学完了基础知识,如何作项目?平时在公司工做都是作些什么?其实我想说,只要你找对方法,随便打开一个网站,都能是你的项目。javascript
这里指的面向对象不仅仅适用于javascript,也适用其余语言。前端
万物皆对象,因此,任何事物都是有特征(属性)和动做(方法)的,通常拿到一份需求分档,或者你浏览一个网页看到一个画面的时候,脑子里就要有提炼出来的属性和方法的能力,那你才是合格的。vue
//商品属性
var name = 'macbook pro'
var description = ''。' var price = 0; //商品方法 addOne:funcion(){alert('增长一件商品')}, reduceOne:function(){alert('减小一件商品')}, //购物车属性 var card = ['macbook pro' ,'dell'] var sum = 2, var allPrice = 22000, //购物车方法 function addToCart:function(){ alert('添加到购物车') } addToCart()复制代码
var product={
name:'macbook pro',
description:'',
price:6660,
addOne:funcion(){},
reduceOne:function(){},
addToCart:function(){
alert('添加到购物车')
}
}
/*购物车*/
var cart={
name:'购物车',
products:[],
allPrice:5000,
sum:0
}复制代码
function Product(name,price,des) {
/*属性 行为 能够为空或者给默认值*/
this.name = name;
this.price = price;
this.description = des;
}
Product.prototype={
addToCart:function(){
alert('添加到购物车')
}
addOne:funcion(){},
reduceOne:function(){},
/*绑定元素*/
bindDom:function(){
//在这里进行字符串拼接,
//例如
var str = ''
str +='<div>价格是:'+this.privce+'</div>'
return str
},
}
function Card(products,allPrice,sum) {
/*属性 行为 能够为空或者给默认值*/
this.products = products;
this.allPrice = allPrice;
this.sum = sum
}
Product.prototype={
getAllPrice:function(){
alert('计算购物车内商品总价')
}
}复制代码
经过建立各类对象例如macbook java
//后台给的数据
var products= [
{name:'macbook',price:21888},
{name:'dell',price:63999}
]
var str = ''
for(var i = 0,len=products.length;i<len;i++) {
var curName = products[i].name
var curName = new Product()
curName.name=products[i].name;
curName.price=products[i].price;
str+= curName.bindDom()
}复制代码
上面这种方式,就下降了耦合性,无论你用什么语言,仍是任何javascript框架(模板引擎,jquery,react等),都是脱离不开上面那段代码的思想,react
再来讲说,如今mvvm的模式,例如vue,他们不须要获取dom,那么渲染的时候,定义好一个一个的组件就好了。属性所有用{{}}定义好,剩下的就是替换模板,就解决了。jquery
data:{
name ='',
price='',
description = ''
},
methods:{
addToCart:function(){
alert('添加到购物车')
}
addOne:funcion(){},
reduceOne:function(){},
}复制代码
而后page级组件引入这个产品组件,而后循环这个产品组件就行了。编程
组件化的好处bash
固然这篇文章是为了锻炼抽象化思惟的能力,虽然跟javascript模块化的历程也有点搭边,我还但愿你们在浏览任何网页的时候,去分析一下,这个模块你来设计,你会怎么设计,能作到解耦和,版本可迭代可维护,利于团队开发吗?框架
若有不对,请指正dom