标签:

在我学习Javascript的原型对象时,我总是不自觉地拿Java的类思想来做比较,时间久了,我渐渐认识到二者有巨大的不同。

首先,类是不能直接当方法来运行,它最简便的方式是调用其静态方法;而原型对象本身就是一个方法体,它可以直接运行。二者在构造对象的过程中,js可以扮演两种角色,一个可以将原型对象当方法来使用,才接触js时,都是以这种形式来使用,即万物皆方法体,像c;另一个是模仿面向对象的特性,为原型对象定义属性,运用构造器时,将构造器构造的对象的指针指通过原型链指向原型对象的属性,从而实现面向对象编程的形式。其实,做个有趣的实验,定义一个原型对象,为其定义一些属性,也为其定义可自动执行的部分代码,如:

function test(){

//定义两个属性

this.pro1="属性1";

this.pro2="属性2";

//再定义部分可自动执行的代码

alert("原型对象中代码被执行了!");

}

test(); //当方法体来用,可以执行内部代码,但属性无法访问

alert(new test().pro1); //方法体在构造时内部代码执行了一遍,并且实例对象通过原型链的生成可以访问其中属性

而这点,允许混杂的现象在Java类中是绝对不被允许的,这也可以体现为什么js是基于对象,而不能被称为绝对规范的完全面向对象,与其说js“模仿”了面向对象的使用思想,我更倾向于说它是借用了面向对象的思想。如果一种新的优秀的编程思想被创造出来,js一样能凭借它的灵活模仿出来,而那些强类型的编程语言很可能就只能。。。。。。

标签:

js代码中可以有java的对象吗_js原型对象与Java类的区别相关推荐

  1. java keypress事件_javaweb开发-js代码中keypress事件调用判断,取得keyCode值

    在js代码中的一段代码,keypress事件调用的函数中的代码. var keyCode = event.keyCode ? event.keyCode : event.which ? event.w ...

  2. [js] 代码中如果遇到未定义的变量,会抛出异常吗?程序还会不会继续往下走?

    [js] 代码中如果遇到未定义的变量,会抛出异常吗?程序还会不会继续往下走? 在浏览器环境下JS 解析器解析到未定义变量时,会抛出 Uncaught ReferenceError 错误,JS 引擎会停 ...

  3. js代码中实现页面跳转的几种方式

    js代码中实现页面跳转的几种方式 注:jquery的$.get(),$.post(),$.ajax()都不会使页面发送跳转,因为其本质都是ajax请求. 第一种: <script languag ...

  4. 细说JavaScript对象(2):原型对象

    JavaScript 并没有类继承模型,而是使用原型对象 prototype 进行原型式继承. 尽管人们经常将此看做是 JavaScript 的一个缺点,然而事实上,原型式继承比传统的类继承模型要更加 ...

  5. ES6 (二十二)Class 的继承、extends关键字、super 关键字(函数调用(constructor)、对象(父类原型对象))、原型对象(原型链)、Mixin 模式

    ES6 (二十二)Class 的继承.extends关键字.super 关键字(函数调用(constructor).对象(父类原型对象)).原型对象(原型链).Mixin 模式 文章目录 ES6 (二 ...

  6. jsb调用java_在JS代码中使用反射调用java代码注意事项(附webview使用方法)(转)...

    本文是推荐使用过jsb.reflection的开发者进行阅读.关于jsb.reflection的说明请参照: 我们在代码编写过程中,通常会需要在js脚本中调用到java代码或者Objective-C的 ...

  7. 如何在 JS 代码中消灭 for 循环

    Edit: 在我入职上一家公司的第一天,看到代码库里面一堆的 for 循环,内心有些崩溃,于是做了一次技术分享,展示怎样在代码中避免 for 循环.这篇文章是那次分享的总结.至于为什么我提倡避免 fo ...

  8. jsfor循环终止_详解如何在JS代码中消灭for循环

    Edit: 在我入职第三家公司的第一天,看到代码库里面一堆的 for 循环,内心有些崩溃,于是做了一次技术分享,展示怎样在代码中避免 for 循环.这篇文章是那次分享的总结.本文并不完美,其中递归的部 ...

  9. 如何在js代码中消灭for循环实例详解

    转载自:https://www.jb51.net/article/144662.htm 补充一:看来很多人没看完文章就评论了.我在文章末尾说了,是不写 for 循环,不是不用 for 循环.简单陈述不 ...

最新文章

  1. 如何理解naive Bayes
  2. BIOS误删win10引导 delete boot option如何恢复
  3. 大寨鸿蒙系统的电器,华为传来两个好消息,鸿蒙OS大时代将于6月2日正式开启...
  4. 信息系统项目管理08——项目质量管理
  5. es文件浏览器怎么用_ES文件浏览器——安卓第一文件管理APP
  6. java free hd 798,[https://www.798ziyuan.com/]Java入门级项目全程实录V2.0
  7. 03.【python基础二】if判断语句之if-else、elif、if嵌套
  8. sourcetree教程(去掉注册账号)
  9. 从两句偈语开始写的一首诗《看花》,以及创造思路、过程
  10. Java程序设计-书上重点总结
  11. 【软件定义汽车】【硬件篇】特斯拉FSD芯片
  12. 双目立体匹配流程详解
  13. unity2D物体朝向并靠近鼠标位置,击退效果
  14. matlab中clear的功能,matlab中clc,close,close all,clear,clear all作用区别
  15. java联机_Java实现简易联网坦克对战小游戏
  16. 剖析ASP.NET WebAPI 转化 ActionResult 为 HttpResponse的机制
  17. AssetBundle-AssetBundle Brower Tool
  18. 个人邮箱申请邮箱会员怎么注册,成为会员后有什么好处?
  19. 响应式HTML网页开发,web开发中的响应式网页设计
  20. 计算机二级office考试试题分布,计算机二级MS-OFFICE考试ECEL题型汇总附答案.pdf

热门文章

  1. 【树莓派】可能是最简单粗暴的树莓派搭建个人网站教程
  2. 专用计算机系统是,计算机系统是什么
  3. 【译】一份通俗易懂的React.js基础指南-2018
  4. 记一次内存溢出的分析经历——使用thrift
  5. Python第一周 学习笔记(1)
  6. [Spring boot] Spring boot + JPA 基本架构,完成CRUD
  7. Java调用WebService接口实现发送手机短信验证码功能
  8. Redis 为什么用跳表而不用平衡树
  9. Swift类扩展使用方法
  10. VMware手动启动USB Arbitration Service