JS之function

  这阵子因为要学习React Native ,而RN必备的知识就是JS,所以开始学习起来了Js,在此声明写博客就是为了更好的学习,总结一些我学习过程中知识点,有不同意见的请尽情发表!


1、方法声明
function functionname()
{
这里是要执行的代码
}
例如:
/创建对象
var person = new Object();
// 创建方法
person.eat = function(){
  return "我吃了";
} ;
例2:
工厂模式:通过一个函数创建对象。
// 工厂模式
function producePerson(sex, age, name) {
  // body...
  var person = new  Object;
  person.sex = sex;
  person.age = age;
  person.name = name;
  person.eat = function(){
  return "我吃了";
  } ;

  return person;
};
//通过方法创建对象
var person2 = producePerson("男",19,"Eric");
例3:构造函数模式
//构造函数模式
function producePerson2(sex,age,name){
    this.sex = sex;
    this.age = age;
    this.name = name;
    this.eat = function(){
         return "我吃了3";
    };
}
//构造函数模式
function producePerson2_2(sex,age,name){
   if (this instanceof producePerson2_2 ) {
       this.sex = sex;
       this.age = age;
       this.name = name;
       this.eat = function(){
           return "我吃了3";
       };
  }else{
       throw new Error("please add 'new' to make a instance");
  }
}
var person3 = new producePerson2("男",19,"ERIc");
注意:这个new关键字是必须,如果不加,clock就不会当成构造函数调用,而只是一个普通的函数。同时,还会意外地给他的外部作用域即window添加属性,因为此时构造函数内部的this已经映射到了外部作用域了。所以为了安全起见,可以如producePerson2_2。构造函数的缺点:由于this指针在对象实例的时候发生改变指向新的实例。这时新实例的方法也要重新创建,如果n个实例就要n次重建相同的方法。
例4:原型模式
function clock(hour,minute,second){
 }
 clock.prototype.hour=11;
 clock.prototype.minute=11;
 clock.prototype.second=11;
 clock.prototype.showTime=function(){
   return(this.hour+":"+this.minute+":"+this.second);
 };
var clock = new  clock();
//这个有问题?????
 function clock2(hour,minute,second){
 }
 clock.prototype = {
  constructor:clock,    //必须手动设置这个属性,不然就断了与构造函数的联系了。没有实例共享原型的意义了。
  hour:12,
  minute:12,
  second:12,
  showTime:function(){
   return(this.hour+":"+this.minute+":"+this.second);
  }
 };
首先,每个函数都有一个prototype(原型)属性,这个指针指向的就是clock.prototype对象。而这个原型对象在默认的时候有一个属性constructor指向clock,这个属性可读可写。而当我们在实例化一个对象的时候,实例newClock除了具有构造函数定义的属性和方法外(注意,只是构造函数中的),还有一个指向构造函数的原型的指针,ECMAScript管他叫[[prototype]],这样实例化对象的时候,原型对象的方法并没有在某个具体的实例中,因为原型没有被实例。
例5 构造-原型模式
 function clock3(hour,minute,second){
  this.hour = hour;
  this.minute = minute;
  this.second = second;
 }
 clock.prototype.showTime=function(){
   return(this.hour+":"+this.minute+":"+this.second);
};
 var newClock = new clock3(12,12,12);
这个有问题??????!!!!
2、调用方法
objectName.methodName()
更多参考:JS定义类和对象




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值