一个非前端攻城狮遇到的javascript的坑

因为一个研究型的小项目,需要用到javascript做一个图形展示,所以用到了jquery easyui+echarts,因为长久不做开发,而且以前的前端经验也不足,所以在写javascript时语法和特性都存在点问题,不过还是用到了adapter模式,用来将图形展示与数据处理分开,最终达到了最初设想的效果。下面就记录一下自己在写这些代码时遇到的坑。

1、对象的定义不能用类名,全用var,这是javascript的语法要求;

2、Dictionary类和Vector类可以自己定义,但是key值不能用对象,因为没有compare的方法,不知道是不是同一个对象,但是我也很奇怪,为什么javascript没有一个内置一些常用的数据结构,而需要自己单独定义。我也奇怪jquery难道也没有么,我总觉得应该有,只是我可能时间仓促没有找到,如果有小伙伴知道,请帮忙回复一个好用的,谢谢。

3、对于javascript类的继承,虽然网上查到有四种模式,但我个人还是建议用_initialized的方式,更偏向java的类定义语法。

if (typeof Vector._initialized == 'undefined') {

  Vector.prototype.add = function(key) {
   if (this.vector.haskey(key))
    return;
   else
    this.vector.setkey(key, V);
  };

Vector._initialized = true;}

类似上面的语法,但是发现如果采用带参数继承时,如果父类调用自己的一个prototype方法,那么初始化时系统不能正常调用到,引擎会报没有这个方法,所以我的感觉就是继承时,不要使用带参数的构造函数,可以用一些prototype的initial方法来实现。我的测试代码如下:


function A(s1, s2) {
 var s = this.get();
 //var s = "";
 this.totalLength = s + s1.length + s2.length;
  }
A.prototype.get = function(){
 return 's';
};

function B(s1, s2) {
 A.apply(this, arguments);
 for (var m in A.prototype) {
  if (!B.prototype[m]) {  // 父类不能覆盖子类的方法
   B.prototype[m] = A.prototype[m];
   }
   }
 var s = this.get();
 alert(s + this.totalLength);
  }

4、利用jquery的ajax时,只能用http访问,直接本地访问时会报错。所以访问时要注意修改一下。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值