1.js的函数 1.函数: 1.总共三种写法
//第一种写法
function fun1() {
alert("fun1");
}
//第二种写法
var fun2 = function(){
alert("fun2");
}
//第三种写法
var fun3 = new Function();
2.一个函数就是一个对象 1.动态的给对象添加属性
fun1.name1 = "动态给fun1添加属性name";
alert(fun1.name1);
2.动态的给对象添加方法
fun1.name2 = fun2;
alert(fun1.name2());
3. 动态的给对象添加json格式的数据
fun1.json = {
name:"燕鲲鹏",
sum:function(a,b){
var s = a+b;
alert("sum:"+s);
}
}
alert(fun1.json.name);
fun1.json.sum(1,2);
3.在js中,任何一个函数都能找到其对象 访问一个对象,即函数的两种方式:
fun1();
window.fun1();
4.只要声明一个函数,该函数就属于window对象的一个属性
window.fun1();
2.编程练习 练习:编程写出一个:abc.bcd.cde.edf.fwr();要求:最后输出:"hello world" 方式一,给函数添加函数格式的属性
function abc() {
}
function fu1() {
}
function fu2() {
}
function fu3() {
}
abc.bcd = fu1;
fu1.cde = fu2;
fu2.edf = fu3;
fu3.fwr = function () {
alert("hello world");
}
abc.bcd.cde.edf.fwr();
方式二,给函数添加son格式的属性
function abc() {
}
abc.bcd = {
cde:{
edf:{
fwr:function(){
alert("hello world");
}
}
}
}
abc.bcd.cde.edf.fwr();
3.小结 1、一个方法就是一个对象 2、一个对象可以作为任何一个对象的属性存在 3、任何一个对象都是window的一个属性 4、虽然一个对象可以很随意的赋值一个属性,但是这种做法很不安全 5、所有的方法都是由Function通过new的形式产生的 2.js的面向对象编程 1js对象的格式 1.一个函数就是一个对象,如function aa(){} 2. 3.json格式就是一个js对象,{name:”燕鲲鹏”,addr:”北京上地”} JSON(JavaScript ObjectNotation)一种简单的数据格式,比xml更轻巧。JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的API或工具包。 2.对于function aa(){}的理解 1.aa是一个函数 2.aa是一个对象 3.aa是一个构造器函数 可以通过构造器函数,再加上一个new关键字,创建出一个对象 在js中没有类的概念 4.任何一个函数都可以是构造器函数 看下面的例子:
function aa(){}
alert(aa.constructor);//aa的构造器函数为Function(){}
var a = new aa();
alert(a.constructor);//a的构造器函数为aa(){}
3.给对象添加属性 1给一个对象添加属性
function aa(){}
var a = new aa();
a.name = "ykp";
alert(a.name);//输出ykp
var b = new aa();
alert(b.name);//输出undefined,因为name是添加在a对象上的
2.在原型上添加属性
//在构造器函数的原型上加了一个属性name
function aa(){}
aa.prototype.name = "ykp";
var a = new aa();
alert(a.name);//输出ykp
var b = new aa();
alert(b.name);//输出ykp
4.利用js创建一个类 1.方式一,在构造器函数的原型上添加方法和属性
//构造一个Book类
//构造函数
function Book(){
}
//给构造函数添加属性
Book.prototype.name;
Book.prototype.price;
//给book添加方法
Book.prototype.setName = function(name){
this.name = name;
}
Book.prototype.getName = function(){
return this.name;
}
Book.prototype.setPrice = function(price){
this.price = price;
}
Book.prototype.getPrice = function(){
return this.price;
}
//创建一个对象
var book = new Book();
book.setName("java");
book.setPrice(100);
//获得属性值
alert("name:"+book.getName()+",price:"+book.getPrice());//输出name:java,price:100
2.方式二,在构造器方法中返回json格式的方法
/*
* 可以通过返回一个json对象的形式返回很多方法和属性,这些方法和属性都在json对象中
*/
function Book(){
return{
setName:function(name){
this.name = name;
},
getName:function(){
return this.name;
},
setPrice:function(price){
this.price = price;
},
getPrice:function(){
return this.price;
}
}
}
var book = new Book();
book.setName("java");
book.setPrice(100);
alert("name:"+book.getName()+",price:"+book.getPrice());//输出name:java,price:100