python的结构体(包括class,function 和class 实例)和javascript的结构体(Object和function)实现有些相似,也有些不同。
python的class对数据和函数的存储都是维绕着__dict__.
对象的属性和方法都存在里面。
而javascript的对象(Object或function)应该有两个hash存储数据,一个是prototype,一个是xxx(现在还不知道叫什么, 存储对象自己的方法和数据)。也是数据和方法混合存储。
对于对象的实例方法的搜索,二者也是差不多。
python中:
class Dog():
def spark(self):
print "spark"
dog = Dog()
dog.spark() #输出 spark
dog.__dict__中没有任何东西,当dog.spark调用时,python首先在dog__dict__中找spark,如果没有,就从class Dog中的__dict__中查找。
class dict中的函数没有copy到instance中去。
对于javascript:
function Dog(){}
Dog.prototype.spark = function(){alert('spark');}
dog = new Dog();
dog.spark(); #输出spark
如果修改class Dog的方法会影响dog的方法吗?
Dog.prototype.spark = function(){alert('spark2');}
dog.spark() #输出spark2
变了。
所以javascript的方法检索和python一样。
python和javascript感觉很像,
从python的class和function的定义方式, key:value, 就可以看出,python的核心就是dict。
而javascript的prototype也就是一个dict。
他们对于方法和数据都是混合存储的。不加”()“就是方法本身,加了“()”就是对方法进行调用。
这和ruby的实现方式就不一样了。
因为ruby是OO的纯爷们,内部区分了成员变量和方法,所以存储也是分开的iv_table和m_table.
而class实例化的过程中,又和javascript有点像。
javascript中prototype中定义的方法相当于ruby中的instance_methods。里面的东西是可以在函数检索的范围。不同的是,js的函数是copy的。ruby在class实例中只是保存了一个指向class的指针k_class.
js和ruby的class都是把函数分成了两部分,instance_methods(prototype)和class methods(对象私有方法)
分享到:
- 2009-03-05 16:42
- 浏览 2540
- 评论(0)
- 论坛回复 / 浏览 (0 / 4630)
- 查看更多
相关推荐
Learn how to turn raw data into rich, interactive web visualizations with the powerful combination of Python and JavaScript. With this hands-on guide, author Kyran Dale teaches you how build a basic ...
You'll also receive updates when significant changes are made, new chapters are available, and the final ebook bundle is released., Python and Javascript are the perfect complement for turning data ...
基于python+javascript实现农产品价格预测+LSTm+可视化源码+数据库sql.zip基于python+javascript实现农产品价格预测+LSTm+可视化源码+数据库sql.zip基于python+javascript实现农产品价格预测+LSTm+可视化源码+数据库...
Data Visualization with Python and JavaScript 2017-03-17: Second Release
基于python+JavaScript实现显示文件的二进制图表(软件构造大作业).zip基于基于python+JavaScript实现显示文件的二进制图表(软件构造大作业).zip基于python+JavaScript实现显示文件的二进制图表(软件构造大作业).zip...
软件工程课设-基于python和JavaScript的汽车充电管理系统设计源码.zip软件工程课设-基于python和JavaScript的汽车充电管理系统设计源码.zip软件工程课设-基于python和JavaScript的汽车充电管理系统设计源码.zip软件...
基于Python+JavaScript+vue+css的开源量化交易平台开发框架,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于Python+JavaScript+vue+css的开源量化交易平台...
本源码提供了一个基于Python和Javascript的车展大屏演示前后端web应用的设计。项目包含46个文件,其中包括18个PNG文件、8个Python文件、7个CSS文件、7个JavaScript文件,以及用于版本控制和文档的文件。此外,还有1...
Data-Visualization-with-Python-and-JavaScript-Scrape-Clean-Explore-Transform-Your-Data.pdf
Python+JavaScript+html编写的免费刷题工具,可以实现浏览器读取本地excel文件,自定义题库。 软件特色: 1.完全免费使用,没有任何广告插件; 2.实现了浏览器读取本地excel文件,非IE浏览器也可以轻松读取本地文件...
Frappe Framework是Python和JavaScript的全栈Web应用程序框架
JavaScript到Python编译器和JavaScript解释器,用100%纯Python编写
CNN可视化解释器:基于Python和Javascript开发,包含89个文件,包括21个JPEG图像文件、19个Svelte组件文件、13个JavaScript文件、9个PNG图像文件、6个SVG图像文件、3个JSON配置文件、3个GIF图像文件、2个Markdown...
code2flow:把你的 Python 和 JavaScript 代码转换为流程图
Recording personal Java, Python, JavaScript solutions for Leetcode problems. 记录个人 Java, Python, JavaScript 的Leetcode题解.zip
pys:模仿 Python 字符串分片操作的 JavaScript 模块
curlconverter, 将curl命令转换为 python,javascript,php 将curl语法转换为原生 python 和javascript代码实时演示https://curl.trillworks.com安装$ npm install --save curlconverter用法
Pylava是一个用于Python和JavaScript的代码审计工具
本项目是基于Python和Javascript的视频播放网站设计源码,共有3268个文件,包括867个PNG文件、738个SVG文件等。系统采用前后端分离的设计,前端使用HTML、CSS、Javascript,后端采用Python和PHP。该系统提供了一个...