0
点赞
收藏
分享

微信扫一扫

#yyds干货盘点#three.js源码解读-getObjectByProperty方法

1.源码截图

#yyds干货盘点#three.js源码解读-getObjectByProperty方法_源码解读

  • getObjectByProperty方法使用了递归
  • getObjectById方法和getObjectByProperty方法都是基于getObjectByProperty方法,所以获取物体的核心方法就是getObjectByProperty

2.代码测试

稍作修改: 把源码中的this改成为多传递一个参数,方便测试,因为本地不是面向对象的写法,源码中是面向对象的写法

// 该方法使用了递归
function getObjectByProperty(obj, name, value) {
if (obj[name] === value) {
// 如果有匹配的, 都会走到这里来
return obj;
}

for (let i = 0, l = obj.children.length; i < l; i++) {
const child = obj.children[i];
const object = getObjectByProperty(child, name, value);
if (object !== undefined) {
return object;
}
}
return undefined;
}

3.测试

const res = getObjectByProperty(scene, 'name', 'mySphere')

4.核心代码说明

#yyds干货盘点#three.js源码解读-getObjectByProperty方法_three.js_02

5.总结

  • 递归的使用
  • 学会阅读源码,学习别人的编码思想
举报

相关推荐

0 条评论