不同js文件访问对方定义的对象,如何访问?
做的一个电商产品detail页面,点击按钮添加购物车的功能。
1、写了个cart.js,定义购物车的对象及方法(如:计算购物车的总价)
//myAjax是自己写的方法(在$$这个对象中的方法),获取json数据的,购物车json数据和product数据json是两个独立的,要获取2遍。
//$$.myAjax(URL,fn)
$$.myAjax('http://localhost/resume work/jsonsc/cart.json',function(e){
var json = JSON.parse(e);
var cart = transformCart(json); //定义了购物车对象cart
/*使用对象中的方法属性*/
cart.bindBasic(); //绑定基本信息
cart.bindList();//绑定购物车中产品列表
});
function Cart(){} //构造购物车对象
Cart.prototype={ bindBasic:function{},bindList:function(){}}
2、又写了个product.js,定义产品detail的对象及方法(如:产品基本信息)
//获取产品数据,这里和购物车一样
$$.myAjax('http://localhost/resume work/jsonsc/product.json',function(e){
var json = JSON.parse(e);
var product= transformCart(json); //定义了产品对象product
/*使用对象中的方法属性*/
product.bindDOMDetail(); //绑定基本信息
product.bindEvents();//绑定产品的方法,如添加到购物车
});
function Product(){} //构造产品对象
Product.prototype={ bindDOMDetail:function{},bindEvents:function(){}}
------------------------
**这里问题来了,因为Product对象中,要定义个方法,是点击购物车按钮,将该产品添加到购物车中,但是购物车对象是在cart.js中定义的,product.js如何访问到cart的对象**
即prodyct.js中,有
Product.prototype={
//每次点击添加到购物车,就向购物车里添加一个product对象
bindEvents:function(){
$("#btn").click(function(){
cart.push(product);
**//但是这里的cart访问不到,因为是在cart.js中定义的!!!**
})
}
我尝试过以下几种方法:
1、将cart.js中的cart对象,做成全局变量,这里所有js文件都能访问到。(成功,但感觉这样不安全)
2、将cart.js中的cart对象以闭包的形式传出来,再在product中访问。(失败。可能闭包写的有问题,
疑问:因为cart.js中cart对象,是在$$.myAjax()获取后台数据,格式化后得到的,myAjax()是我自己封装的一个方法,并不是一个函数,准确的说是$$对象的方法,怎样用闭包形式传出来?)
3、在cart.js中写一个方法returnCart讲cart这个对象返回出来,尝试在product中用call的形式调用。(失败,不知道怎么写)
问题总结:
我尝试的方法中2、3能不能行得通,如果行,怎么写比较好?
有没有其他更好的方法获取比较好?
谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
把可以暴露(需要函数外部调用)的方法return 出来.
可以考虑事件监听