当前位置: 代码迷 >> JavaScript >> 这段代码是类吗?解决办法
  详细解决方案

这段代码是类吗?解决办法

热度:304   发布时间:2013-11-18 11:57:15.0
这段代码是类吗?

var QUERY = 'puppies';

var kittenGenerator = {

  searchOnFlickr_: 'https://secure.flickr.com/services/rest/?',


  requestKittens: function() {
    var req = new XMLHttpRequest();
    req.open("GET", this.searchOnFlickr_, true);
    req.onload = this.showPhotos_.bind(this);
    req.send(null);
  },

  showPhotos_: function (e) {
    var kittens = e.target.responseXML.querySelectorAll('photo');
    for (var i = 0; i < kittens.length; i++) {
      var img = document.createElement('img');
      img.src = this.constructKittenURL_(kittens[i]);
      img.setAttribute('alt', kittens[i].getAttribute('title'));
      document.body.appendChild(img);
    }
  },

  constructKittenURL_: function (photo) {
    return "http://farm" + photo.getAttribute("farm") +
        ".static.flickr.com/" + photo.getAttribute("server") +
        "/" + photo.getAttribute("id") +
        "_" + photo.getAttribute("secret") +
        "_s.jpg";
  }
};

// Run our kitten generation script as soon as the document's DOM is ready.
document.addEventListener('DOMContentLoaded', function () {
  kittenGenerator.requestKittens();
});


是谷歌的js代码,太长了,做了删减。能否先解释一下大概语法,然后告诉我哪里可以找到,谢谢。我在w3cschool  上面找不到这语法。

------解决方案--------------------
这个是JS,这就是几个JS方法,只不过写法有点不一样,这个是用字面量写的。kittenGenerator.方法名().这样调用就行了 。
------解决方案--------------------

function people( name , sex ){
    this.name = name 
------解决方案--------------------
 "xxx";
    this.sex = sex 
------解决方案--------------------
 "man";
};
people.prototype.say = function(){
    console.log( "hi,world!!!" );
};
var xxx = new people( "aaaa" , "women" );

4楼正解  JS是没有真正意思上的类   它是基于原型的
上面是一个  基本原型的例子。。
楼主 也可以把这个理解为“类”
------解决方案--------------------

你后缀爱是什么就是什么。

json,啊。
------解决方案--------------------
所谓的json语法   一般指的也就是面向对象的编码方式
比如

var people = {
    say : function(){
        alert("你好,地球人!");
    }
};
people.say();

大牛们 出来补充吧
------解决方案--------------------
还来个json语法,不搞死人才怪。
json不论去到那种语言上,都要转化成其变量所适应的类型才行。
------解决方案--------------------
引用:
这个json函数很复杂吗?求大神们给个链接或者书名什么的吧。

json不是函数,是一种结构吧,我觉得只要是写成{}形式的对象,就称为json格式的对象。
我总结json格式对象分四种
1.模仿数组的对象,如var arr={x1:1,x2:2}
2.对象直接量,如var obj={attribute:1, method:function(){}}
3.单体对象:划分了命名空间的对象直接量,上面例子的obj变量,换成功能名,就是单体对象。
4.命名空间:里面都是函数或类,不是真正的属性和方法。
我根据js设计模式一书自己总结的,楼主参考
你的例子是上面的第三种,单体对象。


------解决方案--------------------
说这个是json的不完全正确。严格意义上的json是基于javascript语法的数据储存和交换文本。而且字段名必须用""括起来,我是吃过亏的,别的语言解析没引号的会出错。

json就是使用了javascript的用[]表示数组,用{}表示对象的语法,组合起来主要用于储存或传递数据,比如多个系统之间,或ajax取得服务器数据等方面。json可以是任何后缀的,.json只是显得更直观。

回到这个代码,只是写了一个对象,而不是一个类,直接可以用的,不用new。说json的是指这代码写法和json的写法很相近。当然你要说他就是个json,只是字段名没加引号,这也没问题,只是在javascript环境下使用的话不会出错。javascript中有个思想,function是第一公民,function也可以做为数据传递。

这种象json一样的写法在js中大量存在,象本代码是直接当成一个对象使用。也有代码做为命名空间,或储存数据,交换数据等等。

  相关解决方案