javascript相关基础知识

1.在函数内部没有用var来创建变量时,该变量默认为全局变量,所以在函数内部定义变量要使用var,防止一些莫名其妙的问题。
2.js中强制类型转换Number(),如果强制转换一个非数值类型的值会得到一个NaN的值(not a number)
     parseInt(a)可以转换以数字开头的字符串,将前面数字部分转化为数字;开头若是字符,则得到一个NaN
var a="11";
alert(a);
alert(Number(a)+1)
3.判断是否属于某种类型用
alert(typeof a) //打印a 的类型
alert(a instanceof Array) //判断a是否是array类型
4.在布尔类型中,非0即是true,除外:NaN、 undefined。当一个变量没有定义的时候,是undefined。
alert(!!NaN
var size;
alert(!!size)
5.面向对象有两种概念:基于类的、基于原型拷贝的。
js中类可以这么写:就是一个普通方法。方法内不用this声明的时候,函数永远不会把它当做为一个方法或属性。
function person(name,age) {
this.name=name;
this.age=age;
this.add="北京";
}
var a=new person('林木','23');
 alert(a.add+a.name+a.age);
除了a.add这种方式调用,还可以使用 a["name"]
可以通过for(var el in a){}来遍历a中的所有属性( 显示声明的属性
for ( var e in a) {
alert(e+":"+a[e])
}
6.常用的对象:
(1)data对象
var d=new Date();
document.write(d.getFullYear()+'年'+d.getMonth()+'月'+d.getDate()+'日'+'星期'+d.getDay());
(2)string对象
var a=new String("sasas");
alert(a)
var b=a. concat ('abd');
substr (a,b) //从a开始取5个字符
substring (a,b)//从a开始到b结束
(3)array对象
1)var a=new Array();
a.push("aaa");
a.push("ddd");
alert(a)
2)var a=new Array(11,22,123,'122');
3)b=[11,22,13,'2122'];
数组转字符串:a.join(',');
(4)number
(5)math

7.计时
 setTimeout("big()", 3000)
 setInterval("big()", 3000)
8.dom模型;
document object model
9 工厂的方式创建类//无法检测所创建对象的数据类型 只能 typeof
function createperson(name,age) {
var o=new Object();
o.name=name;
o.age=age;
o.say=function(){
alert(this.name+":"+this.age);
}
return o;
}
 var p=createperson("linmu", "aaa");
 p.say();
10.构造函数的方式创建类
 function createperson(name,age) {
this.name=name;
this.age=age;
this.say=function(){
alert(this.age+this.name);
}
}
 
var p=new createperson("linmu", "11");
p.say();
为防止黄色区域带来的问题:为每一个对象复制一份拷贝:可以这么做:this.say=say;
把say写为一个公用函数。缺点是 破坏了函数的封装性,可能会是函数中充斥大量
全局函数

11.基于原型的创建方式
 function Person() {
}
 Person.prototype.name="ss";
 Person.prototype.age="10";
 Person.prototype.say=function(){
 alert(this.name+""+this.age);
 }
 var P=new Person();
 P.say();
在对象中删除某个属性 delete p.name ;
判断某个对象中是否有某个属性P.hasOwnPerporty("name");
12.用json的方式重写原型
 function Person() {
}
Person.prototype={
                constructor:Person,
name:"linmu",
age:10,
say:function(){
alert(this.age+"hahha"+"   "+this.name);
}
}
var p=new Person();
p.say();
这时原型的constructor指向并不是Person,可以通过手动的指向

13.基于原型链的方式继承
Person.prototype=new People();
若使用了Person.prototype={ }重写原型,则继承失效;
14.基于伪装的继承方式
 function Person() {
 this.color=['red','blue'];
}
function Child() {
Person.call(this);
}
var child=new Child();
alert(child.color);

Person.call(this);调用而非直接用parent()  这样this对象指的就是child

15.基于组合的方式实现继承,原型链和伪造的方式:
function Country() {
this.na='else';
this.bbp='olo';
}
 function Person(name) {
 this.color=['red','blue'];
 this.name=name;
}

function Child(name,age) {
Person.call(this,name);
this.age=age;
}
Child.prototype=new Country();
var child=new Child("linmu",12);
alert(child.color);
alert(child.name);
alert(child.bbp)

16.ajax
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值