三木社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 218|回复: 0
打印 上一主题 下一主题

对象工厂

[复制链接]

1562

主题

1564

帖子

4904

积分

博士

Rank: 8Rank: 8

积分
4904
跳转到指定楼层
楼主
发表于 2017-8-8 08:01:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在 addon.cc 模式里,你能用 C++ 函数创建并返回一个新的对象,这个对象所包含的 msg 属性是由createObject() 函数传入:
  1. // addon.cc
  2. #include <node.h>

  3. using namespace v8;

  4. void CreateObject(const FunctionCallbackInfo<Value>& args) {
  5.   Isolate* isolate = Isolate::GetCurrent();
  6.   HandleScope scope(isolate);

  7.   Local<Object> obj = Object::New(isolate);
  8.   obj->Set(String::NewFromUtf8(isolate, "msg"), args[0]->ToString());

  9.   args.GetReturnValue().Set(obj);
  10. }

  11. void Init(Handle<Object> exports, Handle<Object> module) {
  12.   NODE_SET_METHOD(module, "exports", CreateObject);
  13. }

  14. NODE_MODULE(addon, Init)
复制代码
使用 JavaScript 测试:
  1. // test.js
  2. var addon = require('./build/Release/addon');

  3. var obj1 = addon('hello');
  4. var obj2 = addon('world');
  5. console.log(obj1.msg+' '+obj2.msg); // 'hello world'
复制代码


回复

使用道具 举报

Archiver|手机版|小黑屋|三木电子社区 ( 辽ICP备11000133号-4 )

辽公网安备 21021702000620号

GMT+8, 2025-6-27 00:34 , Processed in 0.027546 second(s), 23 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表