其实一开始编js没怎么用过对象,一般都用func,func,func···但是用多了,感觉代码一点都不美观,还要这里包一个函数,那里包一个函数,或者一直都是函数调用,不好看,而且一些重用的都要重写的话就很麻烦(不好意思,对于我这种新手,开始还是一般用func比较高效率···)。所以就决定开始要用object来编程才能更省事,下面就是我看了一些博客文章关于类的见解,有什么不对的希望各位可以多多给些指点:

对于类的编程,声明的方法有如下几种:1、var test = function(){};2、function test(){};3、var test = new Object();4、var test = {};···我现在能想到的就只有这四种,麻烦各位大神还有什么可以声明对象的继续补充,小弟在此谢过!

此时要分开方法来说:

对于1、2方法,应该是有一些已有属性的,就好像你给test.name加个值,但是你发现输出test.name的时候是输出  func  的名字,不过test可以加其他静态属性,但是还有没有其他保留字,暂时我还没继续去找;

而对于3、4方法,是可以向test.name赋值的,也会正确输出该值。

所以,对于func固有的属性,若用func方法来声明对象就可能有些值是不允许赋的,因此,个人更建议对象声明时用的是3、4方法。但是,其实用func来声明类的好处就是可以更直观地初始化一些基本的值


接着就是类的继承,下面举个例子

var parent = function(name,age){
this.name = name;
this.age = age;
this.method = function(){
alert("This is my method!");
}
}
//类继承 var child = function(name,age){
parent.apply(this,arguments); //OR test.call(this,name);this.age = age;
//Other method or variables
}
//这种继承其实有一个好处就是可以直接在子类里面实例化父类,父类的变量只要在func本体内就可以直接在子类中用了。但是,子类内实例化并不是万全之策,下面再看看 /*---------------------------------------------------------------------------*/ var parent = function(name,age){
this.name = name;
this.age = age;
}
parent.prototype = {
run: function(){
alert(this.name + " is running!");
},
work: function(){
alert(this.name + " is working!");
},
} var child = function(name,age){
this.name = name;
this.age = age;
}
//类继承
child.prototype = new parent(); var c = new child("li",20);
c.run();//有alert,如果像之前在子类内用parent.apply方法,那么parent.prototype的内容对于child是没作用的,所以我就觉得这个就是子类内定义父类(parent.apply)和外面子类prototype(child.prototype = new parent())的区别

以上就是本人菜鸟的一些学习内容,希望有什么错误的话可以得到各位的指正!谢谢!

最新文章

  1. [Spring]支持注解的Spring调度器
  2. JS设计模式初探
  3. APP源码集中打包大放送!十一个千万级别APP源码随意处置!
  4. 【HDOJ】1260 Tickets
  5. 22个CSS黑魔法
  6. Java基础之"=="和 和 equals 方法的区别
  7. 启动tomcat时报错:java.lang.OutOfMemoryError: PermGen space
  8. EF开发程序经常用的几个东西
  9. KafKa介绍(分布式架构)
  10. 8. leetcode 485. Max Consecutive Ones
  11. Python Fabric远程自动部署简介
  12. faster-rcnn在编译时遇到的一些问题
  13. java中的反射整理
  14. 设置RHEL-7.0的运行级别
  15. 线程--继承Thread
  16. Windows下修改Tomcat黑窗口标题
  17. 软工实践——结对作业2【wordCount进阶需求】
  18. django form 对象is_bound属性
  19. LeetCode--191--位1的个数
  20. C/C++——[04] 语句

热门文章

  1. ATS
  2. 【leetcode❤python】 303. Range Sum Query - Immutable
  3. Linux服务器的那些性能参数指标
  4. 微信小程序-视图条件渲染
  5. 剑指offer六:反转链表
  6. Struts2 简介
  7. Thread.join()方法
  8. cookie记录用户名
  9. latex 竖排子图的生成
  10. windows使用python3.4生成二维码