日期:2014-05-16  浏览次数:20488 次

js中的三大特性:继承、封装、多态

?

今天看了一下js,加强javascript.资料来源于传智播客与网络。

做了一些记录,如下:

java 三大特性:封装、继承、多态。
js 也能将这三大特性体现的淋漓尽致。
js 对象也是一样的,一直做java,也一直使用js,但平时没注意。
其实这也就是面向对象的思想体现吧,不分语言,都有封装、集成、多态这三大特性,平常老说java 的三大特性,看来是有点受限制了。

原型属于构造器。
原型能干什么?
功能是将对象的属性延续下去。(继承)
原型通过内部的原型链来维护。
原型默认只有constructor属性。
Object 是原型链上最顶层的对象。(原型链)和属性有关
window作用域的最顶层对象(作用域链)。在执行环境中,与变量有关
原型集成,有一个弊端:只能有单继承。 php不支持多继承。

js 怎样实现多继承?
可以使用call()方法实现多继承。

jquery是怎么实现继承的?
jQuery.extend = jQuery.fn.extend = function(obj, prop) {
// 防止传入错误的参数prop;
if( argumnets.length > 1 && ( prop === null || prop == undefined)
return obj;

// 如果prop为空,则将obj扩展到自己身上,jQuery.js中大部分都是为空;
if( !prop ) {
prop = obj;
obj = this;
}

// 将prop的所有属性复制到obj;
for (var i in prop )
obj[ i ] = prop[ i ];

return obj;
}


json(JavaScript Object Notation)(对象表示法)

我们可以使用json格式的字符串,在应用之间传递数据(php==javascript)。

关于json的一个提问:
js1={"a1":"a1"、"a2":"a2"}
js2={"b1":"b1"、"b2":"b2"}
js1、js2为json对象
如何把js1中的对象和js2中的对象相加形成一个新的json对象?
回答:
function extend(destination, source) {
for (var property in source)
destination[property] = source[property];
return destination;
}
var js1={"a1":"a1", "a2":"a2"};
var js2={"b1":"b1", "b2":"b2"};
extend(js1, js2);
for(var j in js1) {
alert(js1[j]);
}
上面这个方法,什么对象都可以相加,主要是理解for...in的用法