在 JS 中使用类似 PHP 的魔术方法


当前第2页 返回上一页

__construct() 不需要,JavaScript 早有 constructor。

__destruct():JavaScript 中没有对象销毁的钩子机制。

__call():与 PHP 相反,方法就像 JavaScript 中的属性一样,首先通过 __get() 获取。要实现 __call(),你只需从 get() 返回一个函数。

__callStatic():与 __call() 类似,但是具有 __getStatic()。

__sleep(),__wakeup():JavaScript 没有内置序列化与反序列化。你可以使用 JSON.stringify() 与 JSON.parse(),但是它们没有机制自动触发的任何方法。

__toString() 在早有对应 JavaScript 的 toString()

__invoke():如果你试图调用一个非函数对象,JavaScript 将会抛出一个错误,这将无法避免。

__set_state():JavaScript 中没有类似于 var_export() 的东西。

__clone():JavaScript 中内置克隆功能的钩子。

__debugInfo(): 无法挂接到 console.log() 输出。

我可以使用魔术方法扩展类吗?

是的,在一定程度上:

1

2

3

4

5

class Bar extends Foo {}

// 或者,如果类 Bar 本身包含魔术方法:

const Bar = magicMethods(class Bar extends Foo {

  // ...

})

但是遗憾的是,你无法从子类中访问父类中的属性:

1

2

3

4

5

6

7

8

9

10

11

12

const Foo = magicMethods(class Foo {

  __get() {

    return this.bar()

  }

})

class Bar extends Foo {

  bar() {

    return 'value'

  }

}

// 这个 *不会* 调用 B 的 bar() 方法,而是抛出一个类型错误:

(new Bar).something

推荐教程:《JS教程》

以上就是在 JS 中使用类似 PHP 的魔术方法的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

vue 轻量级图表组件

js 怎么判断数字相等

js数组常见操作方法介绍

如何使用js控制下拉列表左右选择

js闭包是什么

js中渐进增强是什么意思?

详细介绍下js中的window与document

介绍js 表单提交信息加密

带你了解js中[]、{}、()区别(详解)

js如何实现计数排序

更多相关阅读请进入《js》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...