javascript (对象构建方式)
来源:互联网 发布:sql%rowcount merge 编辑:程序博客网 时间:2024/06/05 11:00
1、 Function对象
Javascript没有重载的概念每个对象隐含 arguments对象(实际接收的参数),length属性接收对象期望的参数个,arguments.length,表示实际接收参数个数 ;
var add =function(number){alert(number);};
等价于 var add= new Function(“number”, “alert(number)”);// 最后一个参数表示函数体
等价于 function add(number){alert(number)};
因为是对象的引用,多个同名函数会被最后一个覆盖,与参数个数无关
2、 数据类型:Undefined(undefined)、Null(null)、Number(number)、String(string)、Boolean(true/false)共5种原始数据类型var s = “a”; alert(typeof s) return 'string'
typeof 返回值 'undefined'、'object、'number'、'string'、'boolean'
javascript 如果声明的函数没有返回值或return,那么返回undefined—undefined是从null派生出来的
强制类型转换:只有三种 Boolean(value), String(value),Number(value):数字转换错误return NaN,未定义不可以转换,Boolean没什么用,不建议使用。
3、 Javascript 可以动态的添加、删除属性
Object obj = new Object();
obj.username = “zhangsan”;// obj[“usernam”]= “zhangsan”;
delete obj.username;//
var object = {username: “zhangsan”, password: “lisi”,gender:function(){…}}//最常见的定义对象的方式,属性用逗号隔开
4、 数组
var array = new Array();
array.push(1);
array.length
// var array = [1, 3, 23];// 更常用
Arrays.sort(array);// 1,23,3,先转换成字符,按字符串升序排序,显然不可靠,一般自定义排序
类似java
function compare (num1, num2)
{
varnum1 = parseInt(num1);
varnum2 = parseInt(num2);
if(num1 < num2) return -1;
elseif(num1 > num2) return 1;
else return 0;
}
Var array = [1, 3, 25];
array.sort(compare);// 函数名是对象的引用
arrayà [1 3 25]
5、 创建对象的方式(Javascript只有对象的概念)
A: // 1: 基于已有的对象进行扩充
var object = {username: “zhangsan”, password: “lisi”,gender:function(){…}}//最常见的定义对象的方式,属性用逗号隔开
--------------------------------------------------------------------------
var object = newObject();//比较适合临时创建的对象
object.name ="zhangsan";
object.password ="123";
object.sayName =function(name)
{
this.name =name;
alert(this.name);
}
object.sayName("lisi");
B: // 2: 工厂方法
function createObject(name, password)
{
var object = newObject();
object.name =name;
object.password= password;
/*
object.get =function()
{
alert(this.name+ ", " + this.password);
}
*/
object.get =get;// 推荐.属性独有,方法共享
return object;
}
function get()
{
alert(this.name+ ", " + this.password);
}
var obj1 =createObject("zhangsan", "123");
obj1.get();
var obj2 =createObject("wanger", "3434");
obj2.get();
C:// 3: 构造函数方式
function Person(name,password)
{
this.name =name;
this.password =password;
this.getInfo =function()
{
alert(this.name+ ", " + this.password);
}
// 隐含生成的对象
}
var p = newPerson("zhangsan", "wanger");
p.getInfo();
D // 4: 使用原型方式(prototype); 属性值必须在对象生成之后赋值;属性引用方式(值改变)和Java是一样的;属性会被其他对象共享,该变属性,其他对象可以能发生改变,如果是引用类型的话,常量类型的则不会发生改变
function Student(){}
Student.prototype.name= "zhangsan";
Student.prototype.password= "lkjldjfl";
Student.prototype.getInfo= function()
{
alert(this.name+ ", " + this.password);
}
var s1 = newStudent();
s1.getInfo();
E:// 5: 使用原型 + 构造函数定义对象(实现:属性不共享,方法共享)
function Person()
{
this.name = new Array();
this.password ="123";// 定义的时候记得初始化
}
Person.prototype.getInfo = function()
{
alert(this.name +", " + this.password);
}
var p1 = new Person();
var p2 = new Person();
p1.name.push("张三");
p2.name.push("里斯");
p1.getInfo();
p2.getInfo();
6、 对象的继承inheritance
// javascript 继承:1、对象冒充
function Parent(name)
{
this.name =name;
this.sayName =function()
{
alert(this.name);
}
}
function Sun(name,age)
{
this.method = Parent;// 此种方式在prototype定义的方法不能被继承,不推荐使用
this.method(name);
delete this.method;
this.age = age;
this.sayAge =function()
{
alert(this.age);
}
}
var p = new Parent("zhangsan");
var s = new Sun("lisi", 20);
p.sayName();
s.sayName();
s.sayAge();
第二种方式:// call 方法是Function 对象中的方法,因此我们定义的每一个函数都有call方法,call方法第一个参数会被传递给函数中的this,从第二个参数开始,会依次传递给函数(调用者)中的参数
/** test call 的用户
function test(str1,str2)
{
alert(this.name+ ", " + str1 + ", " + str2)
}
var object = newObject();
object.name ="zhangsan";
object.arg1 = 30;
test.call(object, "aa", 20);
*/
// 使用call实现inheritance
function Daughter(name, gender)
{
Parent.call(this,name);
this.gender =gender;
this.getInfo =function()
{
alert(this.gender);
}
}
//test code
var d = new Daughter("Rose",27);
d.sayName()
d.getInfo();
第三种// 使用apply 实现 inheritance ,类似call
functionDaughter2(name, gender)
{
Parent.apply(this, new Array(name,...));//[name],采用数组传递参数,而call采//用离散的方式
this.gender =gender;
this.getInfo =function()
{
alert(this.gender);
}
}
var d2 = newDaughter2("Rose2", 37);
d2.sayName()
d2.getInfo();
第四种// 使用原型链 实现混合方式继承 推荐
function Parent2(name)
{
this.name =name;
}
Parent2.prototype.sayName= function()
{
alert(this.name);
}
function Sun2(name,age)
{
Parent2.call(this,name);// 实现属性继承
this.age = age;
}
Sun2.prototype = new Parent2(); // 继承父对象的原型
Sun2.prototype.sayAge= function()
{
alert(this.age);
}
// Test code
var sun2 = newSun2("王二", 100);
sun2.sayName();
sun2.sayAge();
7、 Firebug技巧:
function showLog(msg)
{
console.log(msg);
console.info(msg);
console.warn(msg);
console.error(msg);
console.debug(msg);
}
function test(name)
{
showlog(name);
}
showlog(“test”);
8、
- javascript (对象构建方式)
- JavaScript 构建类和创建对象的方式
- Javascript构造对象方式
- javascript对象创建方式
- JavaScript对象表示方式
- javascript对象创建方式
- javaScript的无new构建,jquery源码对象构建方法
- javascript继承对象的方式
- JavaScript创建对象方式研究
- javascript定义对象的方式
- javascript 构造函数方式 对象
- JavaScript 创建对象的方式
- javascript继承对象冒充方式
- JavaScript对象的创建方式
- javascript面向对象编程方式
- javascript中对象创建方式
- JavaScript创建对象的方式
- JavaScript创建对象方式总结
- POJ-2002 Squares解题报告
- zoj 1494 Climbing Worm
- 消息提示宏
- 满分通过科目三
- 【漫谈】国家征收的最高比例的税——增值税
- javascript (对象构建方式)
- double比较大小
- C
- XMPP Technologies Overview
- C++
- 如何选好Android开发书籍和教程[总结]
- qt 中文排序
- 快速排序
- SQL