js新手上路

js是一个神奇的东西,很流行。在w3c说js是面向对象的脚本语言,但是它
和java这种程序设计语言有一些相同,有一些不同。
js没有类,但是它要面向对象。面向对象需要满足 封装,抽象,多态 。该怎么办?
那就使用函数吧,(我觉得原型也是在这样的情况下逼出来的)
使用首字母大写的构造函数,
现在比较推荐的创建对象的方法是这样子的,或者说构造类(创建对象的模板)

function Car(sColor,iDoors,iMpg) {
  this.color = sColor;
  this.doors = iDoors;
  this.mpg = iMpg;
  this.drivers = new Array("Mike","John");
}

Car.prototype.showColor = function() {
  alert(this.color);
};

var oCar1 = new Car("red",4,23);
var oCar2 = new Car("blue",3,25);

oCar1.drivers.push("Bill");

alert(oCar1.drivers);   //输出 "Mike,John,Bill"
alert(oCar2.drivers);   //输出 "Mike,John"

问:方法名是函数的指针?
答:恩 函数名只是指向函数对象的引用值,行为就像其他对象一样。甚至可以使两个变量指向同一个函数:

var doAdd = new Function("iNum", "alert(iNum + 10)");
var alsodoAdd = doAdd;
doAdd(10);  //输出 "20"
alsodoAdd(10);  //输出 "20"

问:js中的函数可以override?
答:可以

function doAdd(iNum) {
  alert(iNum + 20);
}

function doAdd(iNum) {
  alert(iNum + 10);
}

doAdd(10);  //输出 "20"

如果函数无明确的返回值,或调用了没有参数的 return 语句,那么它真正返回的值是 undefined。

问:js如何实现继承?

问:根据存在即合理。原型的存在是为解决什么 需求的呢?

答:原型是为类的一切对象添加统一的方法。 属性是独立的,方法是共享的。

所有的类都有原型,还是所有的对象都有原型?

问:访问权限问题?
答:不好意思,js只有公有作用域,也就是说属性和方法都是开放的,该类创建的任何对象都可以调用类的属性属性和方法。
不过,规约是在属性的前后加上下划线,说明这个属性是私有的。obj.color
问:静态作用域可有?
在java中不用创建对象就可以调用静态方法或者属性,js不支持。

问: js是弱类型的?
答:是的! var a=5 只要一个关键字var 声明a是一个变量,a此时是
数值类型的 。a=”5” string类型的
如果声明后未初始化就为Undefined类型(NULL表示不存在)

问:js是弱类型的但却有5中原始类型,这是否矛盾?
答:js的弱类型是给变量赋值的时候,不用强制指定变量类型,但这并不代表js没有类型啊!

js的函数不检查传递的参数的个数和函数期望的个数是否一致
这就需要用到arguments对象了,arguments.length 可以获取参数的个数,使用角标可以访问参数arguments[0]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值